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

esa*_*sac 14 c# desktop

这个问题已经被要求用于其他语言,甚至对于那些其他语言,我发现他们的答案缺乏如何正确地做到这一点,干净利落(没有混乱的屏幕重绘等等).

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

Pao*_*sco 25

请尝试以下方法:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 对于那些说你做不到的人来说,这确实对我有用,虽然移动它的任何窗口立刻重新粉刷它:( (6认同)
  • 堆栈不平衡是由ReleaseDC方法定义错误引起的.它应该是:static extern int ReleaseDC(IntPtr hwnd,IntPtr dc); (6认同)

lep*_*pie 8

你可以试试:

Graphics.FromHwnd(IntPtr.Zero)
Run Code Online (Sandbox Code Playgroud)

  • Paolo Tedesco的答案曾经为我工作,但停了下来,我无法弄清楚原因.Leppie的回答让我再次为我工作. (2认同)