我已经在这里问过,但唯一的答案是与定位有关。我需要制作一个应用程序,它会在应用程序之外生成一个始终跟随鼠标的图像。我现在知道如何挂钩鼠标位置,但我不知道如何让对象(图像)在其他应用程序的顶部。无论如何,我不知道它是否甚至可能在.NET中。 谢谢!
答案 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方法。直接在桌面上绘图太麻烦且容易出错。