begin process at 2013 06 19 10:39:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

General

 > 

evenement click sur polygone


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

evenement click sur polygone

mercredi 12 septembre 2012 à 22:10:47 | evenement click sur polygone

lololilizozo

bonjour a tous,
j'ai une petite question :
y a t'il moyen de rendre un polygone "clickable" ?
en fait j'aimerais dessiner plusieurs polygones dans un picturebox et declencher un evenement quand je click a l'interieur d'un des polygone.
bonne soiree,
laurent.
mercredi 12 septembre 2012 à 23:05:01 | Re : evenement click sur polygone

ShayW

Salut

et declencher un evenement quand je click



pas trop compris
le click c'est un évènement
l'évènement click du piucturebox est relevé quand on clique le picture box

explique ce que tu veux faire
tu peux conserver les left top de tes polygones
et savoir quand tu cliques le picturebox selon
la position de la souris dans quel polygon tu as cliqué


jeudi 13 septembre 2012 à 00:16:53 | Re : evenement click sur polygone

banana32

Membre Club

Bonsoir,

Voici une soklution; elle vaut ce qu'elle vaut.
Tu peux te servir du régionage d'un contrôle cliquable pour arriver à tes fins. Tout dépend du nombre de polygones que tu veux dessiner.
Voici une solution qui pourra peut-être t'aider :
Code Visual Basic :
Option Strict On
Public Class Form1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'nouveau picturebox (on peut prendre n'importe quel controle cliquable)
        Dim pct As New PictureBox With {.BackColor = Color.Red, .Size = Me.ClientSize}
        'abonnement aux événements
        AddHandler pct.Click, AddressOf pct_Click
        AddHandler pct.MouseEnter, AddressOf pct_MouseEnter
        AddHandler pct.MouseLeave, AddressOf pct_MouseLeave
        'liste de points
        Dim pts As New List(Of Point)
        'ajout des points
        pts.Add(New Point(5, 100))
        pts.Add(New Point(50, 10))
        pts.Add(New Point(100, 10))
        pts.Add(New Point(200, 100))
        pts.Add(New Point(200, 180))
        pts.Add(New Point(100, 200))
        pts.Add(New Point(20, 100))
        'type de liaison ligne
        Dim _region(pts.Count - 1) As Byte
        For x = 0 To pts.Count - 1
            _region(x) = CType(Drawing2D.PathPointType.Line, Byte)
        Next
        'déclaration du graphic path
        Dim path As New Drawing2D.GraphicsPath(pts.ToArray, _region)
        'régionage du picturebox
        pct.Region = New Region(path)
        'ajout au formulaire
        Me.Controls.Add(pct)
    End Sub

    'événements picturebox
    Private Sub pct_Click(sender As Object, e As EventArgs)
        MessageBox.Show("ok")
    End Sub

    Private Sub pct_MouseEnter(sender As Object, e As EventArgs)
        Cursor = Cursors.Hand
    End Sub

    Private Sub pct_MouseLeave(sender As Object, e As EventArgs)
        Cursor = Cursors.Default
    End Sub
End Class

Tu peux abonner tous tes contrôles 'régionnés' sur les mêmes événements.
Et pour savoir lequel à été sélectionné par l'utilisateur, tu peux faire un cast (DirectCast) de l'objet sender.

Salut ShayW
jeudi 13 septembre 2012 à 16:05:14 | Re : evenement click sur polygone

lololilizozo

bonjour et surtout merci beaucoup, c'est exactement ce que je voulais.
par contre est'il possible d'avoir beaucoup de "region" ?
dans mon cas je peux avoir 20 polygone comme je peux en avoir 300, c'est faisable avec cette methode?
en tout cas merci.
laurent.
jeudi 13 septembre 2012 à 19:20:17 | Re : evenement click sur polygone

banana32

Membre Club
Réponse acceptée !
Tu peux faire le test rapidement en changeant un peu le code ci-dessus en celui-là (bon ça met un peu plus de temps mais ca reste acceptable) :

Code Visual Basic :
Option Strict On
Public Class Form1
    Dim rd As New Random

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.WindowState = FormWindowState.Maximized
        '301 formes
        For x = 0 To 300
            'liste de points
            Dim pts As New List(Of Point)
            'ajout des points
            pts.Add(New Point(rd.Next(300), rd.Next(300)))
            pts.Add(New Point(rd.Next(300), rd.Next(300)))
            pts.Add(New Point(rd.Next(300), rd.Next(300)))
            pts.Add(New Point(rd.Next(300), rd.Next(300)))
            pts.Add(New Point(rd.Next(300), rd.Next(300)))
            pts.Add(New Point(rd.Next(300), rd.Next(300)))
            pts.Add(New Point(rd.Next(300), rd.Next(300)))
            pts.Add(New Point(rd.Next(300), rd.Next(300)))
            pts.Add(New Point(rd.Next(300), rd.Next(300)))

            'nouvelle instance de classe
            Dim pct As New clsPiece(pts, x.ToString)
            'paramètres
            With pct
                .BackColor = Color.FromArgb(rd.Next(255), rd.Next(255), rd.Next(255))
                .Location = New Point(rd.Next(1000), rd.Next(1000))
                .Size = New Size(300, 300)
            End With
            'événements
            AddHandler pct.MouseEnter, AddressOf pct_MouseEnter
            AddHandler pct.MouseLeave, AddressOf pct_MouseLeave
            AddHandler pct.Click, AddressOf pct_Click
            'ajout au formulaire
            Me.Controls.Add(pct)
        Next
    End Sub


    'événements picturebox
    Private Sub pct_Click(sender As Object, e As EventArgs)
        MessageBox.Show(DirectCast(sender, PictureBox).Name)
    End Sub

    Private Sub pct_MouseEnter(sender As Object, e As EventArgs)
        Cursor = Cursors.Hand
    End Sub

    Private Sub pct_MouseLeave(sender As Object, e As EventArgs)
        Cursor = Cursors.Default
    End Sub

End Class


Public Class clsPiece
    Inherits PictureBox

    Sub New(points As List(Of Point), Nom As String)
        Me.Name = Nom
        Dim _region(points.Count - 1) As Byte
        For x = 0 To points.Count - 1
            _region(x) = CType(Drawing2D.PathPointType.Line, Byte)
        Next
        'déclaration du graphic path
        Dim path As New Drawing2D.GraphicsPath(points.ToArray, _region)
        'régionage du picturebox
        Me.Region = New Region(path)
    End Sub

End Class
jeudi 13 septembre 2012 à 21:02:51 | Re : evenement click sur polygone

lololilizozo

heuuu.... je crois que je t'aime !!!
ca c'est le top, j'ai plus qu'a l'adapter t c'est ok.
merci beaucoup.
laurent.


Cette discussion est classée dans : click, evenement, polygone


Répondre à ce message

Sujets en rapport avec ce message

comment creer un evenement click sur un controle creer ds le code ? [ par horko ] voila, la question est dans le sujet, y a rien d autre a rajouter. Peut etre qu il faut que je vous dise ce que je veux faire.Je cherche a recuperer u creer un evenement click sur un noeud d'un TreeView [ par chico79 ] bonjourj'aimerais savoir comment on fais pour créer une action lorsd'un click sur un noeud d'une treeviewessayant treeview_dblClick() ... ça declenche evenement click sur un datagrid [ par novarno ] Bonjourje voudrais recuperer l'evenement de click sur une case d'un datagrid avec la ligne et la colonne de la case clickéje n'arrive meme pas à recup Evenement pour chaque index [ par comtention ] Bonjour j'aimerais savoir si il est possible davoir un evenement click (par exemple) pour chaque index d'un bouton?donc un truc du style, mais sa marc evenement click [ par whiskygt ] SalutJe voudrai savoir si il est possible de creer un evenement click sur un label creer dynamiquement ??Si oui comment ?merci evenement click dans cellule table [ par jojo68 ] Bonjour à tous,J'avais posté ce meme message il y a quelque temps...J'ai un formulaire dans access directement lié à une table.Est il possible de défi Evenement click d'une cellule dans Excel [ par fred.toto ] Bonjour à tous, je voudrais juste savoir si quelqu'un sait comment récupérer l'évenement click d'une cellule excel?Merci d'avance Fred selection sur un datagrid [ par ghizounette ] Bonjour comment j ai un probleme sur un datagrid en vb.net 2003 alors il y a un evement click sur datagrid cette evenement quand je click sur tout la Evenement Click [ par Xfactor69 ] Bonjour,Je suis débutant en VB, et je suis bloqué sur un point :Est il possible de gérer un évenement click à côté d'un contrôle.je m'explique, je veu Evenement click droit coller dans textbox [ par lokomass ] Bonjour, J'aimerai percevoir l'evenement click droit coller dans une textbox, comment faire ? Merci


Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,886 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales