Bonjour,
Dans le cadre de mon application, je dois afficher une image que l'utilisateur pourra zoomer, et sur laquelle il devra choisir des points. En Fonction des points choisis, mon application devra dessiner une courbe ou une fonction. (Par exemple courbe de bézier).
Pour ce faire
- j'ai adapté le TimageViewer à ma sauce, en créant un composant ayant des méthodes un peu différentes (je n'aimais pas que l'image se recentrait chaque fois que l'utilisateur zoomait)
- je compte utiliser des TSelectionPoint pour séléctionner et afficher les points à l'écran (mais je n'en suis pas encore là)
Étant donné que les TSelectionPoint seront des enfants ImageViewer, je compte recalculer les coordonnées de chaque point dans la procédure de zoom, en effet, en passant du zoom 1 à zoom 2, le point affiché passera par exemple de (100,50) à (200,100). Dans ma base de données, le points seront enregistrés sans facteur de zoom.
Je suis intéressé par votre avis en ce qui concerne l'affichage des courbes. Je compte enregistrer ces courbe dans un (plusieurs) composant TPath. Bien sur, chaque fois que le facteur de zoom, j'appliquerai ce facteur à mon tpath et je redessinerai. Dans le cas où l'utilisateur ajuste ou rajoute un point dans imageviewer, il faudra recalculer le tpath et redessiner la courbe.
J'hésite entre Afficher l'image de fond dans le TimageViewer et lui mettre comme enfant un tpaintbox de même taille (qui sera aussi redimensionné en cas de zoom) et de chaque fois effacer le paintbox et le redessiner (un peu comme un calque photoshop), ou alors dessiner directement sur le TimageViewer, en gardant à l'esprit qu'il faudra recharger l'image de fond à chaque paint, ce qui risque d'arriver souvent.
Quelle solution prendriez vous, ou avez vous d'autres idées?
Merci d'avance.
Xavier
Partager