bonsoir
est ce que il ya une possiblité de tracer oudessiner un trait entre deux button(button1 , button2) en utilisant souris ?
merci
bonsoir
est ce que il ya une possiblité de tracer oudessiner un trait entre deux button(button1 , button2) en utilisant souris ?
merci
Pourquoi ne pas le faire avec un TShape en forme rectangle avec les dimension qu'il faut pour un trait ?
Salut sliminformatique
Peut etre quelque chose comme ceci a adapter bien sur en fonction des composants
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void __fastcall TForm1::Button1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { int YDepart = Button1->Top + (Button1->Height / 2); int XDepart = Button1->Left + Button1->Width; int XArrivee = Button2->Left; int YArrivee = Button2->Top + (Button2->Height / 2); Form1->Canvas->MoveTo(XDepart, YDepart); Form1->Canvas->LineTo(XArrivee, YArrivee); }
c'est magnefique marche tres bien
sera mieux pour mois s'il ya une petite modification au niveau de code pour que me permet de tracer le trait lorsque j'appuit sur le button1 par la souris jusqu'a on arrive au button2 sans lacher le button de souris
et merci pour votre aide et votre comprehension
Salut !
Pourquoi utiliser des boutons dans ton projet de jeu ?
On peut tout résoudre graphiquement.
Un simple TCustomControl suffirait, et pour ceux à qui cela ferait peur, un TPaintBox aussi ! On peut tout dessiner !
A plus !
Mais sa fais pas une gestion de monstre sa pour géré les click etc ?
Salut !
Donc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 //En global TPoint Srce; TPoint Dest; bool IsLinking = false;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void __fastcall TForm1::Button1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TButton *Target = (TButton*)Sender; IsLinking = true; Canvas->Pen->Style = psSolid; Canvas->Pen->Mode = pmNot; Canvas->Pen->Color = clBlack; TPoint P = Point(Target->Left + X, Target->Top + Y); Srce = P; Dest = P; //Par habitude même si, à ce stade, Srce == Dest Canvas->MoveTo(Srce.x, Srce.y); Canvas->LineTo(Dest.x, Dest.y); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 void __fastcall TForm1::Button1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { TButton *Target = (TButton*)Sender; if(IsLinking) { Canvas->MoveTo(Srce.x, Srce.y); Canvas->LineTo(Dest.x, Dest.y); TPoint P = Point(Target->Left + X, Target->Top + Y); Dest = P; Canvas->MoveTo(Srce.x, Srce.y); Canvas->LineTo(Dest.x, Dest.y); } }Chez moi, les segments sont dessinés sous les objets de la VCL...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void __fastcall TForm1::Button1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { IsLinking = false; //Sans doute qu'ici il faut calculer s'il existe un bouton sous le curseur... //Et sans doute aussi les intermédiaires... }
... et si c'est l'effet recherché...
A plus !
Merci
Partager