gpt4 book ai didi

C# 光标高亮/追随者

转载 作者:行者123 更新时间:2023-11-30 14:42:55 32 4
gpt4 key购买 nike

如何高亮系统光标?就像许多屏幕录制应用程序一样。理想情况下,我想在它周围显示一个光环。

最佳答案

对于纯托管解决方案,以下代码将在当前鼠标光标位置的桌面上绘制一个椭圆。

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);
}

例如,通过使用计时器,您可以每 20 毫秒更新一次鼠标位置并绘制新的空心(椭圆)。

我还可以想到其他更有效的方法,但它们需要使用系统 Hook 的未经处理的代码。查看 SetWindowsHookEx 了解更多信息。

更新:这是我在评论中描述的解决方案示例,这只是粗略的,可以用于测试目的。

  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);
}
}

关于C# 光标高亮/追随者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2622612/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com