用C# 实现类似于QQ的截图功能

说实话,我的C#能力很烂,但是我还是很喜欢一些只能在C/S下面才能实现的一些小功能,实用的功能,比如:那个好色鬼,firefox浏览器的剪报功能等等,最近我又爱上了类似于QQ截图功能,这个是个好又适用的功能,所以在网上找了一大圈,发现在博客园中有位作者的写得不错,现Copy一部分,然后就是把他的源吗附上,供你下载参考

众所周知,QQ截图首先将截取全屏为一个图片,然后用在这个图片基础上截取需要的部分。本程序实现方法类似。

程序运行截图如下:

 

点击浏览下一页

图中心矩形为即将截取区域

程序很粗糙,希望大家提出宝贵意见。

1,自定义矩形类MyRectangle

在QQ截图程序中,用户用鼠标绘制出的截图区域是可调整大小和位置的,在4个边的中点和4个顶点各有一个小矩形标记。(如图所示)

 

点击浏览下一页

.NET Framework中本身没有这样的矩形,因此要自定义实现。

考虑到类的专用性,不必实现.Net Framework2.0中Rectangle的全部功能。
该MyRectangle类图如下:
MyRectangle需包含如下属性 

点击浏览下一页

int X 记录矩形左上角x坐标

int Y 记录矩形左上角y坐标

int DownPointX 绘制矩形时鼠标落点x坐标

int DownPointY 绘制矩形时鼠标落点y坐标

int Width 矩形宽

int Height 矩形高

int MinWidth 矩形最小宽度

int MinHeight 矩形最小高度

bool ChangeSizeMode 标识矩形当前绘制模式是否为“改变大小”

bool MoveMode 标识矩形当前绘制模式是否为“移动”

bool MouseOnLeftTop 标识鼠标当前位置是否在矩形左上角

bool MouseOnLeftMiddle 标识鼠标当前位置是否在矩形左边中点

bool MouseOnLeftBottom 标识鼠标当前位置是否在矩形左下角

bool MouseOnRightTop 标识鼠标当前位置是否在矩形右上角

bool MouseOnRightMiddle 标识鼠标当前位置是否在矩形右边中点

bool MouseOnRightBottom 标识鼠标当前位置是否在矩形右下角

bool MouseOnTopMiddle 标识鼠标当前位置是否在矩形顶边中点

bool MouseOnBottomMiddle 标识鼠标当前位置是否在矩形底边中点

bool MouseOnMiddle 标识鼠标当前位置是否在矩形中心

int LittleRectangleWidth 矩形周边8个小矩形的宽度

int LittleRectangleHeight 矩形周边8个小矩形的高度

Rectangle LeftTopRectangle 矩形左上角小矩形

Rectangle LeftMiddleRectangle 矩形左边中点小矩形

Rectangle LeftBottomRectangle 矩形左下角小矩形

Rectangle RightTopRectangle 矩形右上角小矩形

Rectangle RightMiddleRectangle 矩形右边中点小矩形

Rectangle RightBottomRectangle 矩形右下角小矩形

Rectangle TopMiddleRectangle 矩形顶边中点小矩形

Rectangle BottomMiddleRectangle 矩形底边中点小矩形

Rectangle Rect 主体矩形

Size Size 矩形大小

Image BackImage 背景图片

Cursor MyCursor 光标样式

矩形本身包含监测当前绘制模式和绘制方法,主要方法成员如下:

SetLittleRectangle() 设置8个小矩形

Draw(Color backColor) 绘制方法,+1重载

ChangeSize(MouseEventArgs e) 改变矩形大小

Move(int newX, int newY) 改变矩形位置

CheckMouseLocation(MouseEventArgs e) 判断鼠标当前落点

setAllModeFalse() 将所有模式设定为false

public bool onChangingMode() 判断当前绘制模式是否为“改变大小”或“移动”

Initialize(int x, int y, int width, int height) 根据给定参数初始化矩形...更多信息: [点击浏览该文件:ScreenCutter.rar]QQ截图功能源码

posted @ 2013-03-06 12:04  尼姑哪里跑  阅读(326)  评论(0编辑  收藏  举报