C#, GDI+, DrawCurve, Spline

C#, GDI+, DrawCurve, Spline - C#/.NET managed - Programmation

Marsh Posté le 26-06-2006 à 15:09:56    

Bonjour à tous  :hello:  
 
J'ai une méthode "old school" pour faire des cardinal spline (ce sont en gros des courbes lissées passant par une liste de points de contrôle). Cette méthode calcule tous les points intermédiaires avec une certaine précision (par exemple : entre 2 points de contrôle on calcule 200 points intermédiaires) puis on fait plein de DrawLine, ce qui nous donne une impression de courbe plutôt bonne.
 
En C#/GDI+, si on fait un DrawCurve ou un DrawClosedCurve avec un tableau de Point, et qu'on ajuste le "coefficient de tension" (l'un des arguments de ces méthodes) on obtient exactement la même chose ! Donc on peut se contenter d'un bête appel à DrawCurve au lieu de faire tous les calculs soi-même  :love: Voilà une API qu'elle est bien.
 
Mais maintenant pour détecter si on est en train de clicker sur cette courbe, comment faire ? Parce qu'avant, j'avais accès à tous les points intermédaires, c'était facile de vérifier si le point clické était proche de la courbe ou pas. Maintenant, vu que GDI+ fait l'affichage tout seul, il ne me reste que les points de contrôle.
 
Dois-je continuer à tout faire à la main ? J'aurai bien voulu que les splines de GDI+ soient de vrais objets mathématiques mais on dirait que ce ne sont que des représentations graphiques (je ne trouve rien dans la MSDN)
 
Une idée peut-être ?
Merci d'avance.  :jap:


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 26-06-2006 à 15:09:56   

Reply

Marsh Posté le 26-06-2006 à 18:52:24    

un petit up (au cas ou j'aurai raté un truc dans la doc, genre l'existence d'un objet CardinalSpline :D)


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 03-07-2006 à 11:33:37    

Si ta méthode "old school" peut te permettre de savoir, pour une abscisse donnée, l'ordonnée du point de la courbe, alors sert-en pour détecter les clicks sur la courbe.
Derrière DrawCurve, s'il y a des objets mathématiques, ils sont bien cachés.
 
Sinon par la bidouille : tu dessines ta courbe avec une couleur spécifique, et quand tu click, il suffit de vérifier la couleur du pixel clické pour savoir si ton utilisateur à clické sur la courbe :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed