Salut,
je veux créer une zone de selection à la souris dans une Timage, comment faire?
Salut,
je veux créer une zone de selection à la souris dans une Timage, comment faire?
Salut !
Code : Sélectionner tout - Visualiser dans une fenêtre à part TRect Bnds = Rect(left, top, right, bottom); //à toi de définir left, top...ou bien à l'aide d'une méthode (ici membre de TForm1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if((X < Bnds.Right) && (X > Bnds.Left) && (Y < Bnds.Bottom) && (Y > Bnds.Top)) { //match }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public : void __fastcall InsideBnds(int X, int Y);Une méthode plus générale (par ex : s'il existe plusiers zones):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void __fastcall TForm1::InsideBnds(int X, int Y) { return ((X < Bnds.Right) && (X > Bnds.Left) && (Y < Bnds.Bottom) && (Y > Bnds.Top)); }
Pour terminer, l'interception de deux rectangles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void __fastcall TForm1::InsideBnds(int X, int Y, TRect *R) { return ((X < R->Right) && (X > R->Left) && (Y < R->Bottom) && (Y > R->Top)); }
C'est le cas lorsque l'on délimite une zone à l'aide de la souris :
Dans la OnMouseDown : Bnds.Left = X; Bnds.Top = Y;
Dans la OnMouseMove : Bnds.Right = X; Bnds.Bottom = Y;
Dans la OnMouseUp on échange Left et Right si Left > Right, idem pour Top et Bottom si Top > Bottom
La nature des paramètres (TRect R ou TRect *R) est purement anecdotique, un pointeur étant cependant plus simple et plus rapide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void __fastcall TForm1::InsideBnds(TRect S, TRect *R) { return ((S.Left < R->Right) && (S.Right > R->Left) && (S.Top < R->Bottom) && (S.Bottom > R->Top)); }
A plus !
![]()
merci pour ton aide.
je tiens à te préciser que je suis débutante en programmation C++ Builder, et je n'ai pas bien compris ce que tu as expliqué. si ce n'est pas trop te demander peux tu détailler un peu plus, me dire par exemple ou je dois mettre chaque code
![]()
Salut !
Si tu pouvais donner plus de précisions !
A plus !
Salut,
Je veux savoir ou je dois écrire les codes que tu m’as donné, ou plus précisément toutes les étapes à suivre pour créer la zone de sélection.
A+
Partager