




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C#实现截图工具小项目//窗体关闭-取消热键
privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse){
HotKey.UnregisterHotKey(Handle,100);
//快捷键按下执行的事件
privatevoidGlobalKeyProcess(){
this.WindowState=FormWindowState.Minimized;
Thread.Sleep(200);
button1.PerformClick();
//重写。监视系统消息,调用对应方法
protectedoverridevoidWndProc(refMessagem){
constintWM_HOTKEY=0x0312;
//如果m.Msg的值为0x0312(我也不知道为什么是0x0312)那么表示用户按下了热键
switch(m.Msg){
caseWM_HOTKEY:
if(m.WParam.ToString().Equals("100")){
GlobalKeyProcess();
//todo其它热键
break;
//将系统消息传递自父类的WndProc
base.WndProc(refm);
}
截图窗体-核心Cutter.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
namespacetest{
publicpartialclassCutter:Form{
BitmapscreenBtmp=null;//电脑屏幕的截图
publicCutter(Bitmapbtm){
InitializeComponent();
screenBtmp=btm;
//鼠标右键退出
privatevoidCutter_MouseClick(objectsender,MouseEventArgse){
if(e.Button==MouseButtons.Right){
this.DialogResult=DialogResult.OK;
this.Close();
boolCatchStart=false;//自由截图开始
PointdownPoint;//初始点
//鼠标左键按下-开始自由截图
privatevoidCutter_MouseDown(objectsender,MouseEventArgse){
if(e.Button==MouseButtons.Left){
if(!CatchStart){
CatchStart=true;
downPoint=newPoint(e.X,e.Y);//初始点
RectanglecatchRec;//存放截取范围
//鼠标移动-绘制自由截图路径
privatevoidCutter_MouseMove(objectsender,MouseEventArgse){//路径绘制,核心
if(CatchStart){
//二次缓冲
//不是直接在控件的背景画板上进行绘制鼠标移动路径,那样会造成绘制很多路径,因为前面绘制的路径还在
//而是在内存中每移动一次鼠标就创建一张和屏幕截图一样的新BImtap,在这个Bitmap中绘制鼠标移动路径
//然后在窗体背景画板上,绘制这个新的Bitmap,这样就不会造成绘制很多路径,因为每次都绘制了全新的Bitmao
//但是这样做的话,因为鼠标移动的次数是大量的,所以在内存中会创建大量的Bitmap会造成内存消耗严重,所以每次移动绘制完后,
//需要释放Dispose()画板,画笔,Bitmap资源。
BitmapcopyBtmp=(Bitmap)screenBtmp.Clone();//创建新的,在其上绘制路径
//左上角
PointfirstP=newPoint(downPoint.X,downPoint.Y);
//新建画板,画笔
Graphicsg=Graphics.FromImage(copyBtmp);
Penp=newPen(Color.Red,1);
//计算路径范围
intwidth=Math.Abs(e.X-downPoint.X);
intheight=Math.Abs(e.Y-downPoint.Y);
if(e.XdownPoint.X){
firstP.X=e.X;
if(e.YdownPoint.Y){
firstP.Y=e.Y;
//绘制路径
catchRec=newRectangle(firstP,newSize(width,height));
//将路径绘制在新的BItmap上,之后要释放
g.DrawRectangle(p,catchRec);
g.Dispose();
p.Dispose();
//窗体背景画板
Graphicsgf=this.CreateGraphics();
//将新图绘制在窗体的画板上--自由截图-路径绘制处,其实还是一张和屏幕同样大小的图片,只不过上面有红色的选择路径
gf.DrawImage(copyBtmp,newPoint(0,0));
gf.Dispose();
//释放内存Bimtap
copyBtmp.Dispose();
boolcatchFinished=false;//自由截图结束标志
//鼠标左键弹起-结束自由截图
privatevoidCutter_MouseUp(objectsender,MouseEventArgse){
if(e.Button==MouseButtons.Left){
if(CatchStart){
CatchStart=false;
catchFinished=true;
//鼠标左键双击,保存自由截取的图片
privatevoidCutter_MouseDoubleClick(objectsender,MouseEventArgse){
if((e.Button==MouseButtons.Left)catchFinished){
//创建用户截取的范围大小的空图
BitmapcatchBtmp=newBitmap(catchRec.Width,catchRec.Height);
Graphicsg=Graphics.FromImage(catchBtmp);
//在原始的屏幕截图ScreenBitmap上截取用户选择范围大小的区域绘制到上面的空图
//绘制完后,这个空图就是我们想要的截取的图片
//参数1原图
//参数2在空图上绘制的范围区域
//参数3原图的截取范围
//参数4度量单位
g.DrawImage(screenBtmp,newRectangle(0,0,catchRec.Width,catchRec.Height),catchRec,GraphicsUnit.Pixel);
//将自由截取的图片保存到剪切板中
Clipboard.Clear();
Clipboard.SetImage(catchBtmp);
g.Dispose();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 篷布遮阳篷在户外餐厅的环境改善与商业价值提升措施考核试卷
- 硕士研究成果展示
- 山东省王浩屯中学2025年初三第二次(5月)检查化学试题含解析
- 辽宁省本溪市2025年下学期初三期中考试语文试题含解析
- 江苏省苏州市相城区2024-2025学年初三下学期三诊模拟数学试题含解析
- 山东省泰安市泰山区重点达标名校2025年初三适应性联合考试化学试题试卷含解析
- 四川省成都市成华区市级名校2025年初三年级热身训练生物试题含解析
- 兰州工业学院《新闻学概论理论教学》2023-2024学年第二学期期末试卷
- 四川省眉山多悦高中2025年高三下学期4月暑期摸底物理试题含解析
- 2025年网络技术资格考试试卷及答案
- 2025公务员行政能力测试题及答案
- 华大新高考联盟2025届高三4月教学质量测评化学+答案
- (部编版)语文四年级上册课外阅读“天天练”100篇,附参考答案
- 银屑病治疗新进展
- 静疗护理典型案例
- MapInfo地理数据分析和专题图制作
- 基于大数据平台的数据处理服务项目合同(范文)
- 超星尔雅学习通《社会心理学(南开大学)》章节测试含答案
- 教科版小学科学三年级下册2《动物的一生》单元复习教学课件
- 小学六年级下册综合实践.策划小学毕业典礼--(14张)ppt
- 钢箱梁运输及安装施工方案
评论
0/150
提交评论