资源描述:
《截图程序之区域绘制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、写个截图程序之区域绘制基本思路做一个主界面,然后在主界面上绘制一个矩形,把矩形里填上底图,看上去是截了个图出来。最后把矩形位置的图片保存到剪贴板或者是保存到路径。其实这里最主要的地方就是在界面上怎么来绘制一个矩形,然后是截图快捷键的问题(Hook),这里先写个怎么在界而上绘制一个矩形。矩形的构成如下图:矩形的位置由两个顶点决定,矩形在的方位有10个位置,当在9的位置时,是移动矩形,在10的位置吋绘制新的矩形,在其他8个位置吋,根据不同点点或边改变矩形的大小。这里用一个枚举來表示矩形的位置publicenumMouseSiz
2、e{None=0,UpLeft,UpCentre,UpRight,CentreRight,DownRight,DownCentre,DownLeft,CentreLeft,Centre1•重绘矩形当矩形的形状或位置改变的时候,需要重绘矩形。这里利用OnPaint函数来重绘矩形protectedoverridevoidOnPaint(PaintEventArgse){try{e.Graphics.DrawRectangle(newPen(Color.Black,4),recttangle);//绘制矩形e.Graphics.
3、DrawImage(CatSize(),recttangle.Location);//给矩形填充图片CatSize是返冋了recttangle区域的图片}catch{}}当矩形改变的吋候,需要通知函数重新绘制界血,这里只需要喲功能到this.Invalidate();就能够实现通知界面重绘了2.改变矩形在改变矩形的时候,首先固定了一个点,然后另一个点跟着鼠标改变,这里我们可以得到固定点Pl(xl,yl),和跟着鼠标改变的点P2(x2,y2),这个吋候固定点个鼠标点会有很多中状况。4鼠标和中心点的位置有四中情况鼠标可能在中心
4、的左上J左下J右上J右下四个位置1«1F这里我们不管鼠标和固定点的位置是怎么样的我们都把他们的位置转换成红色区域的位置情况:顶点0的x,y始终是小于点P的x,yIII///修正两个点的位置转换成左上右下型///III///privatevoidSetMousePoint(refPointa,refPointb){intwidth=a.X・b.X;intheight=a.Y・b.Y;a=start
5、;b=End;}这样我们就不用管鼠标的位置了,不管鼠标在哪里我们都转换成左上右下型。3鼠标的位置在绘制的过程屮需要考虑鼠标的位置。在这里在这个以顶点为屮心,长为10个像素的正方形为鼠标变化的位置。这样就可以根据位置来改变鼠标的形状首先我们需要判断点是否在区域内:///III判断点point在a,b构成的区域之内,还是之外III///Tpi点v/param>///底点///6、param>///privateboolGetPintSize(Pointa,Pointb,Pointpoint){if(point.X>a.X&&point.Xa.Y&&point.Y///判断鼠标所在的位置设置鼠标的形状III///7、/param>/////////鼠标鼠标的位置privateMouseSizeGetPosition(Pointa,Pointb,MouseEventArgse){〃鼠标所在的位置有10个方位对应的10个方位SetMousePoint(refa,refb);〃左上this.Cursor=Cursors.SizeNWSE;returnMouseSize・UpLeft;〃上中if(GetPintSize
8、(newPoint(a.X+5,a.Y-5),newPoint(b.X-5,a.Y+5),e.Location)){this.Cursor=Cursors.SizeNS;returnMouseSize.UpCentre;}〃上右讦(GetPintSize(newPoint(b.X-5,a.Y・5),ne