Accueil > Forum > > > > evenement click sur polygone
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
|
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
|
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
Livres en rapport
|
Derniers Blogs
INTéGRATION YAMMER ET SHAREPOINT ONLINE (OFFICE 365), éTAPE 1 .INTéGRATION YAMMER ET SHAREPOINT ONLINE (OFFICE 365), éTAPE 1 . par Patrick Guimonet
#Yammer Certains s'en sont déjà fait l'écho (ici en allemand par exemple : Yammer Integration in Office 365 Phase 1) ou bien sûr sur le blog SharePoint : Make Yammer your default social network in Office 365 en anglais. Mais c'e...
Cliquez pour lire la suite de l'article par Patrick Guimonet [DYNAMICS CRM] AJOUTER LES DOSSIERS DE CRM AU DOSSIER FAVORIS D'OUTLOOK[DYNAMICS CRM] AJOUTER LES DOSSIERS DE CRM AU DOSSIER FAVORIS D'OUTLOOK par bianca
Objectif
Pour aller plus rapidement dans les menus de Dynamics CRM depuis votre client CRM pour Outlook, vous pouvez utiliser le dossier des Favoris d'Outlook. En effet, par simple glisser/déplacer, vous pouvez déposer un éléme...
Cliquez pour lire la suite de l'article par bianca VISUAL STUDIO 2013VISUAL STUDIO 2013 par Etienne Margraff
Ahh, ENFIN ! c'est officiel, il va y avoir un VS et un TFS 2013. De nouvelles fonctionnalités qui vont à mon sens assoir la maturité de TFS qui est maintenant l'outil incontournable pour tout projet (.NET, mais pas seulement !). Si vous n'avez pas jet...
Cliquez pour lire la suite de l'article par Etienne Margraff CONFIGURER LA COLLATION SQL SERVER POUR SHAREPOINT CONFIGURER LA COLLATION SQL SERVER POUR SHAREPOINT par JeremyJeanson
Note : Je poste cet article à titre de pense-bête. Cela fait des années que je me trimballe avec une capture d'écran, car je ne me rappel jamais comment choisir la collation d'un SQL Server pour SharePoint. Pour SharePoint, il est conseillé de choisir la ...
Cliquez pour lire la suite de l'article par JeremyJeanson ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 1: CRéATION DU PLUGINETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 1: CRéATION DU PLUGIN par Philess
Dans cet article nous allons créer un plugin installable sur le Team Web Access qui s'intègrera dans l'architecture du site et se chargera au moment où on le décidera.
Avant de lire ce billet et si cela n'est pas encore fait j...
Cliquez pour lire la suite de l'article par Philess
Logiciels
Nego Facturation (1.85)NEGO FACTURATION (1.85)Nego Facturation est un logiciel complet qui permet de gérer vos factures et devis très simplemen... Cliquez pour télécharger Nego Facturation Devis-Factures PHMSD (2.2.0.1)DEVIS-FACTURES PHMSD (2.2.0.1)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD WDmemoCode (2.0.0.1)WDMEMOCODE (2.0.0.1)WDmemoCode a été conçu pour aider les développeurs Windev à créer/compléter et conserver une base... Cliquez pour télécharger WDmemoCode ProtoMedic (4.0.0.11)PROTOMEDIC (4.0.0.11)ProtoMedic est un logiciel destiné principalement aux médecins généralistes.
ProtoMedic permet d... Cliquez pour télécharger ProtoMedic MyCurriculum 2011 (7.4.1.12)MYCURRICULUM 2011 (7.4.1.12)Rédigez votre Curriculum Vitae mais également ceux de votre famille ou de vos amis très facilemen... Cliquez pour télécharger MyCurriculum 2011
|