C # curseur en surbrillance / suiveur

Comment surligner le curseur système? Comme le font de nombreuses applications d’enregistrement d’écran. Idéalement, j’aimerais afficher un halo autour de lui. Merci

Pour une solution purement gérée, le code suivant dessine une ellipse sur le bureau à la position actuelle du curseur de la souris.

Point pt = Cursor.Position; // Get the mouse cursor in screen coordinates using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) { g.DrawEllipse(Pens.Black, pt.X - 10, pt.Y - 10, 20, 20); } 

En utilisant une timer, vous pouvez par exemple mettre à jour la position de la souris toutes les 20 ms et dessiner la nouvelle ellipse.

Il existe d’autres moyens plus efficaces auxquels je peux penser, mais ils auraient besoin d’un code non modifié utilisant des points d’ancrage système. Jetez un coup d’œil à SetWindowsHookEx pour plus d’informations à ce sujet.

Mise à jour: Voici un exemple de la solution que j’ai décrite dans mes commentaires. Il s’agit simplement d’une solution brute prête à être testée.

  public partial class Form1 : Form { private HalloForm _hallo; private Timer _timer; public Form1() { InitializeComponent(); _hallo = new HalloForm(); _timer = new Timer() { Interval = 20, Enabled = true }; _timer.Tick += new EventHandler(Timer_Tick); } void Timer_Tick(object sender, EventArgs e) { Point pt = Cursor.Position; pt.Offset(-(_hallo.Width / 2), -(_hallo.Height / 2)); _hallo.Location = pt; if (!_hallo.Visible) { _hallo.Show(); } } } public class HalloForm : Form { public HalloForm() { TopMost = true; ShowInTaskbar = false; FormBorderStyle = FormBorderStyle.None; BackColor = Color.LightGreen; TransparencyKey = Color.LightGreen; Width = 100; Height = 100; Paint += new PaintEventHandler(HalloForm_Paint); } void HalloForm_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawEllipse(Pens.Black, (Width - 25) / 2, (Height - 25) / 2, 25, 25); } }