Picture box

Résolu
crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011 - 22 sept. 2004 à 08:18
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 23 sept. 2004 à 14:58
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

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
22 sept. 2004 à 09:27
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
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
22 sept. 2004 à 08:38
>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
0
crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
22 sept. 2004 à 08:50
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!
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
23 sept. 2004 à 14:58
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
0
Rejoignez-nous