IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#]Comment un texte peut suivre les deplacements souris ?


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut [C#]Comment un texte peut suivre les deplacements souris ?
    salut,

    j'aimerais faire un texte(label) qui suit mon curseur mais je ne sais pas comment faire (proprement).

  2. #2
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    Je me suis déjà fait avoir alors => De quel curseur parles tu ? Le curseur de la souris ou d'un texte ?

  3. #3
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    la souris

  4. #4
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            this.MouseMove += new System.Windows.Forms.MouseEventHandler(Form1_MouseMove);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
            }
    Ca te suffit ?

  5. #5
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    bof j'ai deja fait ca mais c'est laid, ca clignote

  6. #6
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    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

  7. #7
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    moi ca clignote pas vraiment, mais on voit le label s'effacer et se rédessiner!

  8. #8
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    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!

  9. #9
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    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

  10. #10
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    Citation Envoyé par lakitrid
    c'est directement en rapport avec la puissance du PC
    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
    et le fait (je suppose) que tu compile en "debug", tu devrais avoir moins de problème en "release" je dis bien "moins" :p
    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.

  11. #11
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    Citation Envoyé par DeusXL
    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.
    ah non tu m'as démasqué !!!

    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

  12. #12
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bon les amis voici l'astuce
    Abandon tu Label faisons simple
    Mon test se contente d'une Form vide avec un curseur qui traine son texte
    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
    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);}
    }
    Et voilà

  13. #13
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    neguib tu triches 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() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
    this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
    PS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Point myPoint = System.Windows.Forms.Cursor.Position;
    myPoint.X -= (this.Location.X);
    myPoint.Y -= (this.Location.Y );
    Bout de code idiot de ma part... Il aurait suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Point myPoint = e.Location;

  14. #14
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par DeusXL
    ...Il aurait suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  15. #15
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    Citation Envoyé par neguib
    Citation Envoyé par DeusXL
    ...Il aurait suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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 !
    Par contre DrawString est faite avec un PointF mais marche très bien avec un Point

  16. #16
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    j'ai utilisé cette méthode :

    je change mon curseur de souris en un curseur perso^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/05/2010, 11h42
  2. [ContextMenu] Comment mon style peut gérer les sous-menus ?
    Par Gregory.M dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 18/09/2008, 23h52
  3. Comment écrire dans un fichier texte sans sauter les lignes
    Par gogéta91 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/07/2008, 19h56
  4. [VBA-W]Comment faire suivre les macros d'un modèle?
    Par gusrom86 dans le forum VBA Word
    Réponses: 7
    Dernier message: 23/02/2006, 11h26
  5. Réponses: 12
    Dernier message: 14/02/2005, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo