日期:2014-05-18 浏览次数:21277 次
g.Clear(Color.White);
------解决方案--------------------
桌面么?
那你一定得到桌面的句柄了。
[DllImport("user32.dll", EntryPoint="InvalidateRect")]
public static extern int InvalidateRect (
IntPtr hwnd,
Rectangle lpRect,
bool bErase
);
[DllImport("user32.dll", EntryPoint="GetDesktopWindow")]
public static extern IntPtr GetDesktopWindow ();
//调用
InvalidateRect(GetDesktopWindow(),System.Windows.Forms.Screen.PrimaryScreen.Bounds,true);
------解决方案--------------------
重绘桌面:
C# code
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern bool RedrawWindow(IntPtr hwnd, RECT rcUpdate, IntPtr hrgnUpdate, int flags);
RedrawWindow(GetDesktopWindow(), null, IntPtr.Zero, 0x85);
------解决方案--------------------
新建控制台程序。粘贴:
[DllImport("user32.dll", EntryPoint = "InvalidateRect")]
public static extern int InvalidateRect(
IntPtr hwnd,
IntPtr lpRect,
bool bErase
);
[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern bool RedrawWindow(IntPtr hwnd, ref Rectangle rcUpdate, IntPtr hrgnUpdate, int flags);
static void Main(string[] args)
{
Thread.Sleep(2000);
Console.WriteLine("现在开始绘制屏幕");
Graphics g = Graphics.FromHwnd(IntPtr.Zero);
g.DrawLine(Pens.Yellow, new Point(0, 0), new Point(500, 800));
g.Dispose();
Thread.Sleep(2000);
Console.WriteLine("现在开始清除屏幕");
Rectangle rect = Screen.PrimaryScreen.Bounds;
RedrawWindow(GetDesktopWindow(), ref rect, IntPtr.Zero, 0x85);
Console.ReadKey();
}