C#在屏幕上画图
2008-01-16 12:50
127 查看
[DllImport("user32.dll")]
private static extern int GetDC(int hwnd);
private void button1_Click(object sender, EventArgs e)
{
System.IntPtr p = (IntPtr)GetDC(0);// '取得屏幕
Graphics g= Graphics.FromHdc(p);
g.DrawRectangle(new Pen(Color.Black),new Rectangle (100,100,100,100));
}
可能用到的API有:
[DllImport("user32.dll", EntryPoint = "GetDCEx", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr IntGetDCEx(HandleRef hWnd, HandleRef hrgnClip, int flags);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern int IntReleaseDC(HandleRef hWnd, HandleRef hDC);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern bool RedrawWindow(HandleRef hwnd, ref RECT rcUpdate, HandleRef hrgnUpdate, int flags);
给你个在桌上画圆的代码吧:
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", EntryPoint = "GetDCEx", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hrgnClip, int flags);
private void button1_Click(object sender, EventArgs e)
{
IntPtr desk = GetDesktopWindow();
IntPtr deskDC = GetDCEx(desk, IntPtr.Zero, 0x403);
Graphics g = Graphics.FromHdc(deskDC);
g.FillEllipse(SystemBrushes.ControlText, 0, 0, 100, 100);
}
我利用了USER32.DLL和GDI32.DLL,为什么这样看不到矩形??
能否给出提示,谢谢
IntPtr hDC = PlatformInvokeUSER32.GetDC(PlatformInvokeUSER32.GetDesktopWindow());
Graphics m_Graphics=Graphics.FromHdc(hDC);
Pen redPen=new Pen(Color.Red, 10);
Rectangle rWorkArea = Screen.GetWorkingArea(Screen.PrimaryScreen.WorkingArea);
m_Graphics.DrawRectangle(redPen,rWorkArea);
PlatformInvokeUSER32.ReleaseDC(PlatformInvokeUSER32.GetDesktopWindow(), hDC);
[DllImport("User32.dll")]
public extern static System.IntPtr GetDC(System.IntPtr hWnd);
private void button1_Click(object sender, System.EventArgs e)
{
System.IntPtr DesktopHandle = GetDC(System.IntPtr.Zero);
Graphics g = System.Drawing.Graphics.FromHdc(DesktopHandle);
g.FillRectangle(new SolidBrush(Color.Red),0,0,100,100);
}
private static extern int GetDC(int hwnd);
private void button1_Click(object sender, EventArgs e)
{
System.IntPtr p = (IntPtr)GetDC(0);// '取得屏幕
Graphics g= Graphics.FromHdc(p);
g.DrawRectangle(new Pen(Color.Black),new Rectangle (100,100,100,100));
}
可能用到的API有:
[DllImport("user32.dll", EntryPoint = "GetDCEx", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr IntGetDCEx(HandleRef hWnd, HandleRef hrgnClip, int flags);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern int IntReleaseDC(HandleRef hWnd, HandleRef hDC);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern bool RedrawWindow(HandleRef hwnd, ref RECT rcUpdate, HandleRef hrgnUpdate, int flags);
给你个在桌上画圆的代码吧:
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", EntryPoint = "GetDCEx", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hrgnClip, int flags);
private void button1_Click(object sender, EventArgs e)
{
IntPtr desk = GetDesktopWindow();
IntPtr deskDC = GetDCEx(desk, IntPtr.Zero, 0x403);
Graphics g = Graphics.FromHdc(deskDC);
g.FillEllipse(SystemBrushes.ControlText, 0, 0, 100, 100);
}
我利用了USER32.DLL和GDI32.DLL,为什么这样看不到矩形??
能否给出提示,谢谢
IntPtr hDC = PlatformInvokeUSER32.GetDC(PlatformInvokeUSER32.GetDesktopWindow());
Graphics m_Graphics=Graphics.FromHdc(hDC);
Pen redPen=new Pen(Color.Red, 10);
Rectangle rWorkArea = Screen.GetWorkingArea(Screen.PrimaryScreen.WorkingArea);
m_Graphics.DrawRectangle(redPen,rWorkArea);
PlatformInvokeUSER32.ReleaseDC(PlatformInvokeUSER32.GetDesktopWindow(), hDC);
[DllImport("User32.dll")]
public extern static System.IntPtr GetDC(System.IntPtr hWnd);
private void button1_Click(object sender, System.EventArgs e)
{
System.IntPtr DesktopHandle = GetDC(System.IntPtr.Zero);
Graphics g = System.Drawing.Graphics.FromHdc(DesktopHandle);
g.FillRectangle(new SolidBrush(Color.Red),0,0,100,100);
}
相关文章推荐
- C#在屏幕上画图
- C# 在屏幕上画图效果的经典例子
- 使用C#实现在屏幕上画图效果的代码实例
- c# 处理空白字符,空白字符是指在屏幕不会显示出来的字符
- C# 图像处理(二)(屏幕截取、截屏插件)
- C# 实现屏幕键盘
- Unity3D 运用GL屏幕画图(阴阳师画符)
- C#获取屏幕大小或任务栏大小
- C#中如何调用Delphi写的Dll,实现画图功能
- C#.NET 用程序画图,曲线图
- c#控件-取屏幕坐标
- C#获取屏幕分辨率(大小)
- c# 实现在屏幕的右下角的提示窗口
- c#得到屏幕一点的颜色值
- C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口
- C#软件开发实例.私人订制自己的屏幕截图工具(十)在截图中包含鼠标指针形状
- c# 获取屏幕DPI
- c# 屏幕截屏工具
- 浅析如何用C#.NET做屏幕截图软件以及注册全局快捷键(上)
- C#软件开发实例.私人订制自己的屏幕截图工具(三)托盘图标及菜单的实现