我正在尝试在C#中的winForm中创建一个程序,其中图像将在应用程序外部跟随鼠标。
我不知道如何在表单之外绘制图像,更不用说按照鼠标操作了。我的解决方案是 - 创建一个无边框的形式并让它跟随鼠标 - 但是这个解决方案不起作用,因为我无法通过代码移动表单。
鼠标需要能够独立于此图像单击并运行。
我将如何做到这一点?
答案 0 :(得分:2)
必须这样做而不改变鼠标的使用方式。
为扩展样式设置WS_EX_TRANSPARENT,使表单忽略鼠标单击。将TopMost设置为True,将Opacity设置为小于100%的值,使其半透明。使用计时器移动表单。类似的东西:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Opacity = .5;
this.TopMost = true;
this.BackColor = Color.Yellow;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
// Makes the form circular:
System.Drawing.Drawing2D.GraphicsPath GP = new System.Drawing.Drawing2D.GraphicsPath();
GP.AddEllipse(this.ClientRectangle);
this.Region = new Region(GP);
}
const int WS_EX_TRANSPARENT = 0x20;
protected override System.Windows.Forms.CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle = cp.ExStyle | WS_EX_TRANSPARENT;
return cp;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
Point pt = Cursor.Position;
pt.Offset(-1 * this.Width / 2, -1 * this.Height / 2);
this.Location = pt;
}
}
答案 1 :(得分:1)