Salut !
Le cercle étant un cas particulier de l'ellipse, pour calculer le coin supérieur gauche et le coin inférieur droit (TCanvas::Ellipse) il suffit de :
1 2
| TPoint Centre;
double Rayon; |
1 2 3 4
| Canvas->Ellipse(Centre.x - Rayon,
Centre.y - Rayon,
Centre.x + Rayon,
Centre.y + Rayon); |
Pour la mise en oeuvre des événementielles en cherchant un peu, il y a beaucoup de discussions qui traitent du sujet, et spécialement pour le graphisme (rechercher MoveTo, LineTo sur ce forum) !
Il existe quand même plusieurs façons de procéder et qui dependent de la manière dont on souhaite rédiger le source !
Sinon, pour le cercle on peut se baser sur l'idée suivante :
Dans la OnMouseDown, on fixe Centre à l'aide du couple (X,Y) donné en paramètre comme celui du cercle à l'endroit du clic.
1 2
| Centre = Point(X,Y);
Rayon = 0.0; //au cas ou le dessin arrive juste après... |
Dans la OnMouseMove, on fait évoluer le rayon au gré du couple (X,Y) donné en paramètre.
Pour le calcul du rayon, c'est aussi simple que ceci :
Rayon = hypot(Centre.x - X, Centre.y - Y);
Ne pas oublier #include <math.h> pour hypot
Pour le dessin il suffit donc d'appliquer ce qui est donné plus haut.
On peut par exemple se servir de Canvas->Pen->Style = pmNot pour :
- effacer (en redessinant à l'ancienne position ou forme)
- dessiner (à la nouvelle position ou forme).
A plus !
Partager