到网上查找截屏发现基本都是一些小孩子的初级玩意,功能强大一点的又没有源代码所以自己花了三四天时间写了一个能达到工业使用质量级别的截图控件。
优点:1、代码量小只有1500行代码 2、结构清晰简单极易于理解 3、扩展性强,如:用widget类很容易制作工具条UI等扩展界面
效果:
其基本的功能有:
1、截屏
2、窗体自动识别
3、截图信息提示
4、放大镜
5、八个方向点改变截屏框
6、鼠标可拖动截屏框位置
7、快捷键
A、left、left、up、down改变截图框位置
B、(ctrl)+ (left、left、up、down)以1的速度改变截屏框大小
d、(ctrl)+(shift)+ (left、left、up、down)以5的速度改变截屏框大小
e、滚轮以20的速度改变截屏框大小
f、(shift)+滚轮以40的速度改变截屏框大小
g、回车截屏,esc退出
具体使用技术:
1、位图操作
2、窗口识别
3、图形叠加与透明
4、反走样画图、画线算法
应用方法:
此工具封装为简单的DLL形式,只有一个入口方法:
SCREENSHOT_API int fnScreenshot(void);
只要调用一下fnScreenshot函数,就可以进入截屏功能,成功会返回1并将截取图形放入windows剪贴板,取消返回0。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
int
_tmain( int
argc, _TCHAR* argv[])
{ typedef
int
(*PfnScreenshot)( void );
PfnScreenshot PSH;
HMODULE
HMod = LoadLibraryA( "Screenshot.dll" );
if
(HMod)
{
PSH = (PfnScreenshot)GetProcAddress(HMod, "fnScreenshot" );
if
(PSH&&PSH())
{
printf ( "已经将截取图形放入剪贴板。" );
}
FreeLibrary(HMod);
}
return
0;
} |
由于参考并使用了很多技术牛人的代码,所以此代码也不敢私藏,现在开源发布出来供大家参考使用。
License:Licensed under the Apache License, Version 2.0 (the "License");
源码下载: