Picture1.Line...

Signaler
Messages postés
8
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
16 avril 2014
-
Messages postés
201
Date d'inscription
mercredi 25 septembre 2002
Statut
Membre
Dernière intervention
10 novembre 2007
-
Salut,

Je programme depuis qq temps, j'ai 2/3 livres, je me debrouille seul mais la je peche.

J'ai une liste de points à relier, et je cherche la fonction qui va bien pour le faire.

A priori Picture1.Line (X1,Y1)-(X2,Y2) devrait fonctionner mais la je suis perdu.....

Merci a celui qui pourra m'aider.

Mr Propre

2 réponses

Messages postés
96
Date d'inscription
samedi 21 octobre 2006
Statut
Membre
Dernière intervention
25 avril 2009

Quelle est la question ?
Pour faire un trait, c'est effectivement Picture1.Line (X1,Y1)-(X2,Y2)...
Messages postés
201
Date d'inscription
mercredi 25 septembre 2002
Statut
Membre
Dernière intervention
10 novembre 2007

Pour relier 2 points seulement, la méthode Line est OK.
Mais pour relier plusieurs points, Line est trop lourd et trop lent.
Il est alors préférable d'utiliser l'api Polyline qui peut relier jusqu'à 16384 points en un clin d'oeil .

Pour utiliser cet fonction api il faut:

1- La déclarer dans un module (ou dans la form où tu vas l'utiliser):
Private Declare Function Polyline Lib "gdi32" ( _
        ByVal hDC As Long, _
        lpPoint As POINTAPI, _
        ByVal nCount As Long) As Long

2- Idem pour la structure POINTAPI utilisée par polyline:
Private Type POINTAPI
        X As Long
        Y As Long
    End Type

3- Dans ton code, tu dim tes variables:
Dim retval As Long,  Qnt As Long, PointsG() As POINTAPI, PointsD() As POINTAPI

4-Dans ton code, tu redim PointsG selon le nombre de points que Polyline doit dessiner:
ReDim PointsG(0 To Qnt - 1)

5-Dans ton code tu remplis PointsG()
For n = 0 To Qnt - 1
    PointsG( n).X = Ta Val X
    PointsG( n).Y = Ta Val Y
Next

6-Ensuite tu dessines tous tes points dans ton picturebox (ici pbxG):
retval = Polyline(pbxG.hDC, PointsG(0), Qnt)