API PolyBezier

Résolu
Messages postés
14
Date d'inscription
samedi 12 août 2006
Statut
Membre
Dernière intervention
27 mai 2008
-
Messages postés
14
Date d'inscription
samedi 12 août 2006
Statut
Membre
Dernière intervention
27 mai 2008
-
Bonjours tous le monde,

Je souhaite effectuer un lissage de courbe avec l'API polyBezier mais je ne trouve pas d'exemple satisfaisant de l'utilisation de cette API en vb6.
Je souhaiterai procéder ainsi :

Mes points (ceux de mon graphique MSChart) sont stockés dans un tableau et  je voudrais faire un lissage de ces points via cette API et reconstruire la courbe avec Mschart ensuite.

J'aimerai avoir un exemple d'utilisation de cette api :

BOOL PolyBezier
(
  HDC          <tt class="param">hdc</tt>,
  const POINT* <tt class="param">lppt</tt>,
  DWORD        <tt class="param">cPoints</tt>
)

hDc , [In], Handle to device context. trouve, ----
<tt class="param">lppt</tt>, [In], Pointer to endpoints and control points., ----
<tt class="param">cPoints</tt>
, [In], Count of endpoints and control points.

De plus j'ai trouver un exemple qui reconstruit la courbe lissée dans une picturebox grâce à Picture1.hdc (PolyBezier(Picture1.hdc,...)
Que dois-je utiliser comme paramètre avec ma MSChart à la place de .hdc ?

Merci

5 réponses

Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
6
Bonjour,


Tu peux récupérer le hdc de ta mschart en utilisant l'API suivante :


Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

GetDC (MSChart1.hwnd)


Il te suffit donc ensuite de mettre PolyBezier(Getdc(MsChart1.hwnd),... au lieu de picture1.hdc et cela devrait fonctionner

L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
14
Date d'inscription
samedi 12 août 2006
Statut
Membre
Dernière intervention
27 mai 2008

OK merci je récupère bien mon hdc avec cette fonction

Par contre toujours pas réussi à faire fonctionner l'api dans mon code...
Personne aurai un exemple concret pour cette api avec un control MSChart ?

Merci
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
6
Re,


Tu trouveras quelques trucs (explication + 1 soucre) ici


Private Type POINTAPI

        X As Long

        Y As Long

End Type


Dim Bez(3) As POINTAPI

Dim i As Integer


Private Declare Function PolyBezier Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) As Long

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long


Private Sub Command1_Click()


Bez(0).X = 0 

Bez(0).Y = 5

Bez(1).X = 2

Bez(1).Y = 3

Bez(2).X = 50

Bez(2).Y = 200

Bez(3).X = 300

Bez(3).Y = 140


Call PolyBezier(GetDC(MSChart1.hwnd), Bez(0), 4)


Ca a l'air de fonctionner, il faut juste que tu récupères tes valeurs
dans ton tableau, et faire en sorte que l'échelle du mschart se
redimensionne...

L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
14
Date d'inscription
samedi 12 août 2006
Statut
Membre
Dernière intervention
27 mai 2008

Ok je vais essayer ça tout de suite ! Par contre je tiendrai au courant que demain  car la je quitte mon lieu de stage et après plus de net, car pas internet chez moi en ce moment...

MERCI en attendant!

@ + bonne soirée
Messages postés
14
Date d'inscription
samedi 12 août 2006
Statut
Membre
Dernière intervention
27 mai 2008

Bonjour,

Alors, j'ai essayé ton exemple et ça a fonctionné tout de suite. Effectivement j'utilisais l'api quasiment comme ton exemple dans mon code sauf que j'utilisais une boucle pour remplir Bez.X et Bez.Y. J'avais une erreur dans cette boucle et mes tableaux étaient mal dimensionnés.
Cette soultion fonctionne.

Merci bonne journée

@+