|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
Bonjour,
Sur un TImage, à chaque clic je crée un trait avec le point précédent. A la fin mon point final est mon point de départ de sorte a avoir une forme fermée. Je remplis un "array of TPoint" avec les points de ma courbe. Quand je fais un canvas.polybezier(ptPlan) cela ne m'affiche rien.. à moins de mettre énormément de point de contrôle.. Pouvez vous m'aider ? Merci |
|
|
00
|
|
|
#2 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 027 ![]() |
Mieux vaut utiliser polyline dans ce cas non ?
__________________
Citation:
|
|
|
|
00
|
|
|
#3 | |||
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 027 ![]() |
Un truc comme ça :
Code :
__________________
Citation:
|
|||
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
Merci, mais le fait d'utiliser un polyline revient au même nan?
Pour lisser les angles je dois forcement faire un polybezier, a moins que je n'est pas compris ? |
|
|
00
|
|
|
#5 | ||
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 027 ![]() |
non :
Citation:
@+
__________________
Citation:
|
||
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
Enfaîte je construit pas courbe et je remplis mon tableau de TPoint.
Une fois que la courbe est tracé je fais un polybezier(tabPT) mais c'est la que j'obtiens rien.. Je vais ressayer avec polyline pour voir |
|
|
00
|
|
|
#7 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 027 ![]() |
Si tu remplis d'abord ton tableau et que tu dessines en faisant un polybézier, il n'y a pas de raison que la courbe ne se s'affiche pas !
En remplaçant polyline par polybezier dans l'exemple que je t'ai donné, tu remarqueras que les portions de courbe s'affichent un click sur 3 sauf pour le début qui se fait sur 4 clicks...normal...
__________________
Citation:
|
|
|
|
00
|
|
|
#8 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
Justement cela marche si j'ai 7 ou 10 points, si j'en est 9 ou 5 ou autres il n'y a rien qui s'affiche
Cela marche si mon nombre de point est de la forme (3*n)+1 ... :'( |
|
|
00
|
|
|
#9 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 027 ![]() |
Tu as l'unité je crois : UBezier qui gère toutes les manières de tracer des courbes de bézier... Fais une recherche sur google, elle est facile à trouver...
@+
__________________
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
Merci je vais regarder avec UBezier
|
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
Rebon jour/soir..
Finalement c'est bon ça marche parfaitement, je combine du polybezier avec du polyline.. parfait Par contre sur le doubleClick/mouseMove de mon TImage savez comment je peut détecter que je suis sur une portion de la courbe/droite ? Peut être récupérer les points X et Y, pixel par pixel pour voir si mon X Y de mon MouseMove est dessus, mais comment avoir cette ensemble de point.. j'ai peur que ce soit lourd quand même.. Merci |
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() Charly Ingénieur TP Inscription : décembre 2006 Messages : 582 ![]() |
Bonjour,
je l'ai déjà fait pour sélectionner des points ou des segments à la souris, en calculant la distance du curseur à ces éléments. Pour 50 segments et une centaine de points cela ne pose pas de problème, c'est très rapide. Par contre, dans mon cas, je connais les coordonnées des points et donc c'est facile - peut être que l'unité UBeziers permet de calculer ces coordonnées ? A+ Charly |
|
|
00
|
|
|
#13 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 027 ![]() |
oui, si l'image n'est pas trop grande, tu peux toujours balayer celle-ci et en ayant fixé une couleur particulière pour ta courbe, récupérer avec getpixel la couleur de chaque pixel de l'image et ainsi la comparer à la couleur fixée.
scanline pour gagner en rapidité...
__________________
Citation:
|
|
|
|
00
|
|
|
#14 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
Merci, j'ai fait comme ça du coup, je regarde la couleur du pixel pour voir si cela correspond à la couleur de ma courbe.
|
|
|
00
|
|
|
#15 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
Je reviens vous voir pour savoir comment avoir des courbes bien lisse ?
Sur l'image a gauche c'est ce que j'ai, et a droite c'est ce que je voudrais.. ![]() Je comprends pas pourquoi mes courbes font "des escaliers" .. Merci |
|
|
00
|
|
|
#16 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 027 ![]() |
Une procédure d'antialiasing...
__________________
Citation:
|
|
|
|
00
|
|
|
#17 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
J'ai regardé et j'ai trouvé quelques solutions que je trouve gourmande, avec Graphics 32 ou OpenGL.
Il n'existe pas une procedure toute simple ou on lui passe un ensemble de TPoint et qui nous tracerais une courbe/droite avec antialiasing ? Merci |
|
|
00
|
|
|
#18 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 027 ![]() |
ça se trouve assez facilement...
ici sur un Timage :http://www.swissdelphicenter.ch/torr...de.php?id=1484 par exemple. je viens de tester, c'est lourd et disgracieux...surtout sur ton fond blanc quadrillé. Tu peux trouver mieux... Sinon directement sur tes points, regarde du côté des posts de Gilbert Geyer. C'est un spécialiste dans ce genre de truc...
__________________
Citation:
|
|
|
|
00
|
|
|
#19 |
|
Membre à l'essai
![]() Inscription : mars 2010 Messages : 133 ![]() |
Oui pareil j'en est essayé plusieurs et c'est vraiment lourd..
Surtout que je redessine mon Canvas dans le mouseMove quand attrape le point d'une courbe, je regarde ce que tu m'as dit et je reviens, merci |
|
|
00
|
|
|
#20 |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 405 ![]() |
pour l'antialiasing il y a l'algorithme de Xiaolin Wu
http://stackoverflow.com/questions/3...n-for-delphi-7
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
00
|
Copyright © 2000-2013 - www.developpez.com