在表单之外绘制/画图

8

我们能在表单之外绘制图像和文本吗?我的意思是真正的在表单之外。

我知道这是一个愚蠢的问题,但我们真的可以吗?

2个回答

12

你可以通过创建一个表单并将其TransparentColor属性设置为其背景颜色,然后在上面绘制来“作弊”。但是,这会禁止您绘制透明颜色,因为它不会显示出来。

或者您可以直接绘制到桌面上。

[DllImport("User32.dll")]
public static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
public static extern void ReleaseDC(IntPtr dc);

IntPtr desktopPtr = GetDC(IntPtr.Zero);
Graphics g = Graphics.FromHdc(desktopPtr);

// Do graphics manipulation here with "g" object

// Very important - free desktop graphics.
g.Dispose();
ReleaseDC(desktopPtr);

4
直接在桌面窗口上绘图的问题在于它不会固定在那里。下次刷新桌面时,你的绘图就会消失。虽然你可以挂接桌面的消息泵,并在它重新绘制时重新绘制,但这是非常浪费的。使用一个全屏透明窗口来拥有你的主窗口是实现这一目的最便宜的方法。 - Tergiver

1

你无法在不存在的东西上绘制。按照这个定义,在表单上下文中,表单 外部 的区域是不存在的。

不过我同意 Henk 的观点,你可以在透明表单上进行绘制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接