C# 在外形上画画

C# 在外形上画画,c#,winforms,draw,paint,C#,Winforms,Draw,Paint,我们能画图像和画文字吗。。。在表格外。。我的意思是在外面 我知道这是个愚蠢的问题,但我们能不能…你不能利用不存在的东西。根据该定义,表单外部的区域不存在于表单的上下文中 不过,我同意Henk的观点,你可以在透明窗体上绘制。你可以通过创建窗体,并将其TransparentColor属性设置为其背景色,然后在其上绘制来“欺骗”。但是,这禁止您绘制透明颜色,因为它不会显示 或者你可以直接画到桌面上 [DllImport("User32.dll")] public static extern IntPt

我们能画图像和画文字吗。。。在表格外。。我的意思是在外面


我知道这是个愚蠢的问题,但我们能不能…

你不能利用不存在的东西。根据该定义,表单外部的区域不存在于表单的上下文中

不过,我同意Henk的观点,你可以在透明窗体上绘制。

你可以通过创建窗体,并将其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);