我想在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);
[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给了我这个错误:
检测到PInvokeStackImbalance
感谢任何帮助, 感谢
答案 0 :(得分:2)
您无法使用C#直接绘制到桌面。基本上你将不得不得到用作壁纸的位图,在上面绘制,然后将其保存到磁盘并将其设置为活动壁纸。
查看this SO question指针
答案 1 :(得分:2)
您可以创建一个没有任何镶边的顶级窗口,然后将其推送到当前顶级窗口集的z顺序背面。然后,您将像任何其他C#窗口一样绘制到该窗口的客户区域。