如何直接在Windows桌面上绘制C#?

这个问题已被要求为其他语言,甚至对于其他语言,我已经find了他们的答案缺乏如何做到这一点,干净(没有搞砸屏幕重绘等)。

是否有可能从C#绘制到Windows桌面? 我正在寻找一个例子,如果可能的话。

尝试以下操作:

using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Runtime.InteropServices; class Program { [DllImport("User32.dll")] static extern IntPtr GetDC(IntPtr hwnd); [DllImport("User32.dll")] static extern int ReleaseDC(IntPtr hwnd, IntPtr dc); static void Main(string[] args) { IntPtr desktop = GetDC(IntPtr.Zero); using (Graphics g = Graphics.FromHdc(desktop)) { g.FillRectangle(Brushes.Red, 0, 0, 100, 100); } ReleaseDC(IntPtr.Zero, desktop); } } 

你可以试试:

 Graphics.FromHwnd(IntPtr.Zero) 

您可以在https://uiautomationverify.codeplex.com/SourceControl/latest#UIAVerify/Tools/visualuiverify/utils/screenrectangle.cs中看到真实世界的代码示例;

这将绘制一个矩形,它将出现在屏幕上,直到用户select在任意位置移除它(不会重新绘制)。 它使用隐藏/显示为popup窗口的窗体。

这是当前Windows SDK中UIAVerify.exe工具背后的代码。

如果您想要使用上述内容,请将以下文件复制到您的项目中:

  • utils\screenboundingrectangle.cs
  • utils\screenrectangle.cs
  • win32\*

可能需要相应地更新命名空间+添加对System.Drawing + System.Windows.Forms引用

然后你可以用下面的代码绘制一个矩形:

 namespace Something { public class Highlighter { ScreenBoundingRectangle _rectangle = new ScreenBoundingRectangle(); public void DrawRectangle(Rectangle rect) { _rectangle.Color = System.Drawing.Color.Red; _rectangle.Opacity = 0.8; _rectangle.Location = rect; this._rectangle.Visible = true; } } } 

 var rect = Rectangle.FromLTRB(100, 100, 100, 100); var hi = new Highlighter(); hi.DrawRectangle(rect);