Picture box

Résolu
Signaler
Messages postés
302
Date d'inscription
samedi 24 janvier 2004
Statut
Membre
Dernière intervention
4 février 2011
-
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
-
est-il possible de dessiner des polygones dans un picture box
et de definir chacun de ces polygones comme un objet
qui reagiront par exemple sur un mouse move?

Si non quel controle puis-je utiliser?

Merci de votre aide

4 réponses

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Pour dessiner un polygone, il y a UNE SEULE méthode, valable dans tous les langages qui permettent des sorties graphiques :

A partir d'une liste de points définissant le polygone, faire un trait reliant chaque point à son voisin.

.Plot
.Line
.Line
.Line
....

Même les méthodes "toutes faites" du style drawPolygon font comme çà.

Manu
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
>est-il possible de dessiner des polygones
> dans un picture box

OUI :o)

> et de definir chacun de ces polygones
> comme un objet qui reagiront par exemple
> sur un mouse move?

Ca par contre, çà me paraît difficile.
Mais tu peux gérer l'évenement Mouse_Move de la PictureBox et détecter à quel moment la souris se trouve au dessus du polygone. Si tu as su dessiner le polygone, tu dois savoir repérer, pour un point (X,Y) s'il est à l'intérieur de ce polygone ou pas.

Manu
Messages postés
302
Date d'inscription
samedi 24 janvier 2004
Statut
Membre
Dernière intervention
4 février 2011

merci donc maintenant comment faire pour les dessiner ces polygones!

en une seule fois, pas du genre
.line A1,A2-B1,B2
.line B1,B2-C1,C2
......

en fait le but c dessiner une carte de france avec toutes les régions!
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
sinon il y a les API's:

Private Type COORD
    x As Long
    y As Long
End Type

Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Any, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As Any, ByVal nCount As Long) As Long
Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
Private Declare Function GetStockObject Lib "gdi32" (ByVal nIndex As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Const ALTERNATE = 1 ' ALTERNATE and WINDING are
Const WINDING = 2 ' constants for FillMode.
Const BLACKBRUSH = 4 ' Constant for brush type.

Private Sub Form_Paint()
    Dim poly(1 To 3) As COORD, NumCoords As Long, hBrush As Long, hRgn As Long
    Me.Cls
    ' Number of vertices in polygon.
    NumCoords = 3
    ' Set scalemode to pixels to set up points of triangle.
    Me.ScaleMode = vbPixels
    ' Assign values to points.
    poly(1).x = Form1.ScaleWidth / 2
    poly(1).y = Form1.ScaleHeight / 2
    poly(2).x = Form1.ScaleWidth / 4
    poly(2).y = 3 * Form1.ScaleHeight / 4
    poly(3).x = 3 * Form1.ScaleWidth / 4
    poly(3).y = 3 * Form1.ScaleHeight / 4
    ' Polygon function creates unfilled polygon on screen.
    ' Remark FillRgn statement to see results.
    Polygon Me.hdc, poly(1), NumCoords
    ' Gets stock black brush.
    hBrush = GetStockObject(BLACKBRUSH)
    ' Creates region to fill with color.
    hRgn = CreatePolygonRgn(poly(1), NumCoords, ALTERNATE)
    ' If the creation of the region was successful then color.
    If hRgn Then FillRgn Me.hdc, hRgn, hBrush
    DeleteObject hRgn
End Sub

Private Sub Form_Resize()
    Form_Paint
End Sub