Hello
Voilou, j'essaie de faire un petit truc avec une TPaintBox...
Dans une TPaintBox, je construis une TBitMap. Dans cette TBitMap, je dessine un curseur en forme de croix sous la méthode OnMouseMove de la TPaintBox. Ainsi, je voudrais que la fameuse crois se déplace en même temps que je déplace ma souris sur le TPaintBox. Jusque là, je n'ai pas vraiment trouvé de solution si ce n'est de redessiner un rectangle blanc par dessus tout pour réinitialiser mon image, et enfin dessiner la croix dont la position a été actualisée. Bon ok je peux être plus flou si vous voulez, mais en gros, voici le genre de code :
Comme vous le voyez, avant de dessiner la croix, je dessine un rectangle ayant les mêmes dimensions que la Paintbox afin de tout effacer. Seulement ça ne me convient pas. En effet, la prochaine étape serait de dessiner une image de fond, par exemple un rectangle, image qui resterait là tout le temps, et de n'actualiser qu'un seul élément, le fameux curseur.
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
17
18
19
20
21
22
23 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { BitMap = new Graphics::TBitmap; BitMap->Width = PaintBox1->Width; BitMap->Height = PaintBox1->Height; } void __fastcall TForm1::PaintBox1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { BitMap->Canvas->Pen->Color = clWhite; BitMap->Canvas->Brush->Color = clWhite; BitMap->Canvas->Rectangle(0, 0, PaintBox1->Width, PaintBox1->Height); PaintBox1->Canvas->Draw(0, 0, BitMap); BitMap->Canvas->Pen->Color = clRed; BitMap->Canvas->MoveTo(X-20,Y); BitMap->Canvas->LineTo(X+20,Y); BitMap->Canvas->MoveTo(X,Y-20); BitMap->Canvas->LineTo(X,Y+20); PaintBox1->Canvas->Draw(0, 0, BitMap); }
J'ai fouillé un peu dans le forum, j'ai eu du mal à trouver une solution à mon problème. J'ai essayé le mode pmXor pour la propriété pen->mode, mais bof bof.
Est-ce que quelqu'un aurait une idée ?
Partager