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
et declencher un evenement quand je click
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question