【问题标题】:C# create an image that follows the mouseC#创建跟随鼠标的图像
【发布时间】:2014-11-27 14:53:48
【问题描述】:

我正在尝试在 C# 中的 winForm 中创建一个程序,其中图像将跟随应用程序外部的鼠标。

我不知道如何在表单之外绘制图像,更不用说让它跟随鼠标了。我的解决方案是——创建一个无边界表单并让它跟随鼠标——但这个解决方案将不起作用,因为我无法通过代码移动表单。

鼠标需要能够独立于该图像进行点击和运行。

我该怎么做呢?

【问题讨论】:

  • 你不能使用自定义鼠标光标而不是为此编写应用程序吗?
  • 检查这个线程:stackoverflow.com/questions/6162433/… 似乎你想做这样的事情。希望这会有所帮助!
  • 不,我不能,因为这将与触摸模拟输入一起使用,以便用户知道他们正在触摸的位置。
  • Rohit,该线程对我没有帮助,也不是我想要做的。不过还是谢谢你。下图不会影响鼠标的使用或点击。
  • 为什么不能通过代码移动表单? Form.Location??

标签: c# image winforms mouse


【解决方案1】:

它必须在不改变鼠标使用方式的情况下这样做。

为扩展样式设置 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;
    }

}

【讨论】:

  • 谢谢,我一定会试一试的!
【解决方案2】:

检查这个线程:

How to drag and move winform using mouse

看来你想做这样的事情。

希望这会有所帮助!

【讨论】:

  • 不,这不是我想做的。我也不欣赏投反对票。我特意说了,图片的移动不能影响鼠标的使用,一定要自然移动。就像如果我想创建一个让放大镜图像跟随鼠标的程序,它必须在不改变鼠标使用方式的情况下这样做。不过感谢您的意见,非常感谢。
  • 不,很抱歉我的原始消息中没有太清楚。在我的程序中,我正在模拟触摸输入,并且需要一个图像来跟随手指的位置(使用深度相机)所以我基本上需要在屏幕上绘制一个不会影响任何东西的叠加图像,并且只是为了让用户知道他们的手指在哪里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多