salut,
j'aimerais faire un texte(label) qui suit mon curseur mais je ne sais pas comment faire (proprement).
Version imprimable
salut,
j'aimerais faire un texte(label) qui suit mon curseur mais je ne sais pas comment faire (proprement).
Je me suis déjà fait avoir alors => De quel curseur parles tu ? Le curseur de la souris ou d'un texte ?
la souris
Code:this.MouseMove += new System.Windows.Forms.MouseEventHandler(Form1_MouseMove);
Ca te suffit ? ;)Code:
1
2
3
4
5
6
7
8 void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { Point myPoint = System.Windows.Forms.Cursor.Position; myPoint.X -= (this.Location.X); myPoint.Y -= (this.Location.Y ); if (myPoint.X >= 0 && myPoint.Y >= 0 && myPoint.X <= Size.Width && myPoint.Y <= Size.Height) label1.Location = myPoint; }
bof j'ai deja fait ca mais c'est laid, ca clignote
Je vois pas trop comment faire sinon tu peux toujours faire un thread qui fait ça très souvent mais de toute façon ça clignotera !
Chez moi ça ne clignotte pas du tout :!:
moi ca clignote pas vraiment, mais on voit le label s'effacer et se rédessiner!
moi ca clignote pas vraiment, mais on voit le label s'effacer et se rédessiner! puis j'ai essayer avec un thread c'est pareil!
c'est directement en rapport avec la puissance du PC et le fait (je suppose) que tu compile en "debug", tu devrais avoir moins de problème en "release" je dis bien "moins" :p
Euhh quand même je pense pas que ça fasse appel à énormément de calculs complexes ! M'enfin c'est vrai que ça doit ptet jouer.Citation:
Envoyé par lakitrid
Débuggueur de Visual C++ .NET 2003, sors de là ! On t'a vu ! Parce que même en debug ou release, sous 2005, aucun problème.Citation:
Envoyé par lakitrid
ah non tu m'as démasqué !!!Citation:
Envoyé par DeusXL
Effectivement mon dernier dev serieux en C# était fait avec VS2003
Pas encore eu le temps de dev sur 2005, mais ca vient !
pour ce qui est de la puissance du PC ca peut jouer en fonction de ce qu'il y a en arriére plan, etc ... Mais là encore c'est encore que du vécu VS2003
Bon les amis voici l'astuce
Abandon tu Label :wink: faisons simple :)
Mon test se contente d'une Form vide avec un curseur qui traine son texte
Et voilà :lol:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; public class Form1 : Form { public Form1() { //... this.InitializeComponent(); this.B = new SolidBrush(this.ForeColor); this.F = this.Font; } //... private const string texte = "Je te suis partout"; private SolidBrush B; private Font F; private float X; private float Y; private void Form1_MouseMove(object sender, MouseEventArgs e) { this.X = e.X; this.Y = e.Y; this.Invalidate(); } private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawString(texte, F, B, X, Y);} }
neguib tu triches :D Bien vu ;)
Mais bon tu as raison, pour faire suivre un texte, ya plus simple qu'un label !
Au moins avec ta méthode, on est sûr que ça laggera pas ;)
Par contre faut pas oublier les deux handlers dans InitializeComponent() :
PS :Code:
1
2 this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint); this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
Bout de code idiot de ma part... Il aurait suffit de faireCode:
1
2
3 Point myPoint = System.Windows.Forms.Cursor.Position; myPoint.X -= (this.Location.X); myPoint.Y -= (this.Location.Y );
Code:Point myPoint = e.Location;
C'est vrai que je ne l'ai pas non plus utilisé car la méthode Graphics.DrawString exige un PointF et non Point, j'ai donc été au plus simple :)Citation:
Envoyé par DeusXL
Bof, comme de toute façon MouseEventArgs.X et MouseEventArgs.Y sont deux entiers, je pense qu'il vaut mieux passer par un Point car PointF ne nous apporte rien (en fait je pense que c'est mieux juste car ça fait une variable de moins...) mais vraiment ça se vaut !Citation:
Envoyé par neguib
Par contre DrawString est faite avec un PointF mais marche très bien avec un Point ;)
j'ai utilisé cette méthode :
je change mon curseur de souris en un curseur perso^^