如何在程序外部的屏幕上画矩形 根据鼠标的移动获得起始点和终结点,用这两点画矩形,我用hook获得了鼠标down和up,但是不知道如何画线,请高手指点! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在Form命名空间下有一个静态类可以直接在屏幕上面绘制~~~自己找找~~~好像叫什么ControlsDraw的~~记不得了~ //画直线---画:Pen 画的类型:Draw Point p1=new Point(10,100);//X坐标 Y坐标 Point p2=new Point(500,100); Pen ps = new Pen(Color.Blue, 3);//钢笔类:线条--------线条的颜色+粗细 Graphics gh = this.CreateGraphics();//创建一个画布 gh.DrawLine(ps, p1, p2);//画 画矩形 Pen ps = new Pen(Color.Brown, 1); Graphics gh = this.CreateGraphics(); gh.DrawRectangle(ps, 30, 20, 600, 200); p1 = PointToScreen(new Point()); p2 = PointToScreen(new Point()); ControlPaint.DrawReversibleLine(p1, p2, Color.Red); 提示你画直线的办法:p1 p2首先要转成屏幕坐标,然后用ControlPaint.DrawReversibleLine()函数就行了 //先声明两个API[DllImport("user32")]static extern IntPtr GetDesktopWindow();[DllImport("user32")]static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter,string lpszClass,string lpszWindow);//获取桌面窗口的hwndIntPtr p1 = FindWindowEx(GetDesktopWindow(), (IntPtr)null, "Progman", null); IntPtr p2 = FindWindowEx(p1, (IntPtr)null, "SHELLDLL_DefView", null);IntPtr desktopHwnd = FindWindowEx(p2, (IntPtr)null, "SysListView32", null);//从desktopHwnd创建GraphicsGraphics g = Graphics.FromHwnd( desktopHwnd);//然后就可以在 g上画图了g.DrawRectangle( Pens.Red,0,0,400,400);g.FillRectangle(Brushes.Blue,100,100,500,500);//用完别忘记释放g.Dispose(); TO:crossrowman在桌面上此方法没有问题,但是在其他窗体上,此方法就不行了! 直接用API比较好,配合SETCAPTURE和RELEASECAPTURE WAKU :能不能说详细点呀 RDLC报表导出Excel中遇到的一个问题,急急急!!!! 用C#开发的,在wince运行载入图片,内存能不能释放?该如何释放? 学习数据库是碰到了域 请问如何实现定时查看硬盘内文件,然后定期以附件的形式发送到指定的邮箱中. ASP.NET中如何将decimal 类型的数据 存在 ORACLE数据库 怎样如何使一个控件在窗体中按照一个轨迹移动? WINFORM下如何给DATAGRID 某列加图片!!!!!! 问点外行话。大神们! 真的很着急,解决了马上给分! .net帮助中的例子的.bat文件如何执行? 用vs2005制作中国象棋的思路 怎么能按一个按纽就转到另一个窗口?帮帮忙,我是个新手
自己找找~~~好像叫什么ControlsDraw的~~记不得了~
Point p2=new Point(500,100); Pen ps = new Pen(Color.Blue, 3);//钢笔类:线条--------线条的颜色+粗细 Graphics gh = this.CreateGraphics();//创建一个画布 gh.DrawLine(ps, p1, p2);//画 画矩形 Pen ps = new Pen(Color.Brown, 1);
Graphics gh = this.CreateGraphics();
gh.DrawRectangle(ps, 30, 20, 600, 200);
p2 = PointToScreen(new Point());
ControlPaint.DrawReversibleLine(p1, p2, Color.Red);
提示你画直线的办法:
p1 p2首先要转成屏幕坐标,然后用ControlPaint.DrawReversibleLine()函数就行了
//先声明两个API
[DllImport("user32")]
static extern IntPtr GetDesktopWindow();[DllImport("user32")]
static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter,string lpszClass,string lpszWindow);//获取桌面窗口的hwnd
IntPtr p1 = FindWindowEx(GetDesktopWindow(), (IntPtr)null, "Progman", null);
IntPtr p2 = FindWindowEx(p1, (IntPtr)null, "SHELLDLL_DefView", null);
IntPtr desktopHwnd = FindWindowEx(p2, (IntPtr)null, "SysListView32", null);
//从desktopHwnd创建Graphics
Graphics g = Graphics.FromHwnd( desktopHwnd);//然后就可以在 g上画图了
g.DrawRectangle( Pens.Red,0,0,400,400);
g.FillRectangle(Brushes.Blue,100,100,500,500);//用完别忘记释放
g.Dispose();
在桌面上此方法没有问题,但是在其他窗体上,此方法就不行了!
能不能说详细点呀