如何在C#中直接在屏幕上绘制?(示例导致Pinvokestack不平衡)
我想直接用C#在桌面上画画(作为墙纸或是其他,我不介意),但我还没有找到方法。我发现:如何在C#中直接在屏幕上绘制?(示例导致Pinvokestack不平衡),c#,desktop,draw,C#,Desktop,Draw,我想直接用C#在桌面上画画(作为墙纸或是其他,我不介意),但我还没有找到方法。我发现: using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Runtime.InteropServices; class Program { [DllImport("User32.dll")] static extern IntPtr GetDC(IntPtr hwnd); [Dl
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 void ReleaseDC(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(desktop);
}
}
它实际上绘制了一个红色矩形,但在1秒之内,Visual Studio给了我以下错误:
检测到PinvokesTack不平衡
感谢您的帮助,
谢谢您不能用C#直接绘制到桌面。基本上,你需要得到一张用作壁纸的位图,在上面绘制,然后保存到磁盘,并将其设置为活动壁纸
查看指针您可以创建一个没有任何chrome的顶级窗口,然后将其推到当前顶级窗口集z顺序的后面。然后你会像其他C#窗口一样进入该窗口的客户端区域。我想你在这里找到了代码?抱歉,不清楚,但“直接”的意思是“不在应用程序的窗口中”。但是如果我想每秒改变10次图像,这是一个好方法吗?