C#app之外的图形对象 - 它可行吗?

时间:2009-10-05 09:55:59

标签: c#

我已经在这里问过,但唯一的答案是与定位有关。我需要制作一个应用程序,它会在应用程序之外生成一个始终跟随鼠标的图像。我现在知道如何挂钩鼠标位置,但我不知道如何让对象(图像)在其他应用程序的顶部。无论如何,我不知道它是否甚至可能在.NET中。 谢谢!

2 个答案:

答案 0 :(得分:3)

完成此类操作的最佳和最简单的方法之一是拥有一个最顶层的窗口,没有边框,也没有显示在任务栏中。这样你就可以在任何你想要的地方绘制任何你想要的东西。

using System.Windows.Forms;

Form overlay = new Form();
overlay.FormBorderStyle = FormBorderStyle.None;
overlay.ShowInTaskbar = false;
overlay.TopMost = true;

对于奖励积分,您甚至可以应用工具栏属性并撤消它被激活的权利。这将产生一种表现不像窗户的形式,但就像f.e.工具提示。为此,您需要子类化Form,如下所示:

public class PassiveForm : Form
{
    public PassiveForm()
    {
        InitializeComponent();
    }

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams parameter = base.CreateParams;
            parameter.ExStyle |= 0x80; // Apply toolbar-property
            parameter.ExStyle |= 0x8000000; // Revoke acitvation
            return parameter;
        }
    }

    protected override bool ShowWithoutActivation
    {
        get
        {
            return true;
        }
    }
}

在鼠标周围稍微用力一点,但合并鼠标位置应该可以正常工作。

答案 1 :(得分:0)

您可以尝试Graphics.FromHdc(IntPtr.Zero)。在简单的旧GDI中,这允许您直接在桌面上绘制所有内容。我不确定这是否仍然适用于.NET。

已添加:那就是说,我仍然会选择另一个答案中提到的trasparent-background-window方法。直接在桌面上绘图太麻烦且容易出错。