概述

windows平台,使用Qt Widget实现一个简易截图工具,支持选区角落拖动缩放、选区移动,支持保存,复制到粘贴板,支持快捷键调出截图、退出截图。暂不支持对截图进行编辑操作,以及鼠标移动到程序窗口可以自动识别,后去有需求可以加上。


本文代码下载在这里


先看效果:

选区后会弹出三个按钮,从左到右分别是:退出、保存到文件、复制到粘贴板。如果选择复制到粘贴板,就可以直接在其他地方进行粘贴截图。

当鼠标在选区上下左右四个角落按下后会出现操作选区,此时拖动鼠标可以改变选区大小。 选区左上角可以实时显示选区的尺寸。

快捷键操作:
Alt+A : 开始截图
Esc:退出截图

正文

截图部分关键代码,使用windows接口实现

int width = GetSystemMetrics(SM_CXVIRTUALSCREEN);int height = GetSystemMetrics(SM_CYVIRTUALSCREEN);// 获取窗口的设备上下文(Device Contexts)HDC hdcWindow = GetDC(GetDesktopWindow());  // 要截图的窗口句柄,为空则全屏// 获取设备相关信息的尺寸大小int nBitPerPixel = GetDeviceCaps(hdcWindow, BITSPIXEL);CImage image;image.Create(width, height, nBitPerPixel);BitBlt(image.GetDC(), // 保存到的目标 图片对象 上下文0, 0,     // 起始 x, y 坐标width, height,  // 截图宽高hdcWindow,      // 截取对象的 上下文句柄0,0,/*m_pParentView->x(), m_pParentView->y(),*/           // 指定源矩形区域左上角的 X, y 逻辑坐标SRCCOPY);// 释放 DC句柄ReleaseDC(nullptr, hdcWindow);// 释放图片上下文image.ReleaseDC();WCHAR wfile[256];memset(wfile,0, sizeof(wfile));tempSavePath.toWCharArray(wfile);HRESULT result = image.Save(wfile, Gdiplus::ImageFormatPNG);QImage shot = cutImage(rect, QImage(tempSavePath));if (bSave){  bool bResult = shot.save(savePath, "png");}

将图片数据复制到系统粘贴板中:

QMimeData * mimeData = new QMimeData;
mimeData->setImageData(shot);
qApp->clipboard()->setMimeData(mimeData);

注:shot是QImage类型。


本文代码下载在这里


Qt实现一个简易截图工具(支持缩放、移动、保存、复制到粘贴板)相关推荐

  1. QT编写简易截图工具

    QT编写简易截图工具 Windows和Linux下编译通过,版本5.9.1 ##设计界面 新建Widget项目,进入ui设计界面,添加QLabel和两个QPushButton,布局如下: Button ...

  2. 怎么画图自动生成HTML,用canvas写一个简易画图工具

    本文将为您描述用canvas写一个简易画图工具,具体操作方法: Document style="border:1px solid #000000;">您的浏览器不支持canv ...

  3. Qt制作一个相册浏览工具

    如何用Qt制作一个相册浏览的小程序? 程序开发思路如下: 1.支持多张相片浏览,可翻页浏览,相片可从本地导入; 2.相片要有放大和缩小的功能; 3.相片可自动浏览,时间间隔可自定义. 主要的代码如下: ...

  4. 原生js实现canvas画布中绘制、移动、拖拽、删除矩形(如简易截图工具)

    功能描述 待图片上传并加载完成后,重新生成画布: 鼠标在画布区域内绘制,移动,拖拽,删除矩形(如截图工具一般): isboundary() 判断是否需要判断边界问题,默认false. 效果截图 实现代 ...

  5. 用canvas实现一个简易绘图工具

    先看效果 这里可以选择颜色,从而进行在600px*400px画布中,随便画 ★HTML架构部分 <!-- HTML架构部分 --> <div><h3>简易绘图工具& ...

  6. qt实现一个简易的计算器

    一.下载qt 下载地址:http://download.qt.io/archive/qt/ 下载安装教程:https://blog.csdn.net/cfan927/article/details/9 ...

  7. 利用Qt制作一个简易聊天软件

    需求分析 即时通讯软件是通过即时通讯技术来实现在线聊天.交流的软件.需要完成基本的通信需求及工作场景需求. 架构分析 截图展示 项目简介 我们编写的即时通信软件叫做SeeU,它是一款基于Qt开发平台, ...

  8. 【OpenCV+Qt】实现简易视频播放器——支持进度条拖动

    OpenCV实现视频播放器,其思路大致就是在线程中使用OpenCV中的VideoCapture循环读取本地视频的每一帧Mat,然后发送到界面转换成QImage进行显示,而进度条拖动则用到了VideoC ...

  9. linux qt小型计算器课程设计,用Qt设计一个简易计算器

    Qt工作原理: 事件驱动,信号与槽原理. 要实现简易计算器的设计需要将界面按钮转到槽,具体程序如下: Widget.h : #ifndef WIDGET_H #define WIDGET_H #inc ...

最新文章

  1. escape sequence
  2. 【Linux 内核】宏内核与微内核架构 ( 操作系统需要满足的要素 | 宏内核 | 微内核 | Linux 内核动态加载机制 )
  3. MVC 自定义IModelBinder实现json参数转Dictionarystring, string
  4. poj 2947 Widget Factory
  5. 成功解决基于VS2015(Visual Studio2015)编写C++程序调试时弹出窗口一闪而过的问题
  6. python 对象真假值的实例(哪些视为False)
  7. Rust 社区求变,PHP 大旗不倒?
  8. Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) dfs + 思维
  9. html设置了标签但是定义不了,在HTML标签管理器中设置不带元素ID的HTML中的事件...
  10. Android写的一个设置图片查看器,可以调整透明度
  11. [Java] lomboz开发插件 (对于J2EE)
  12. 新概念二册 Lesson 29 Taxi!出租汽车! (复习现在完成时)
  13. 漫画:什么是 B+ 树?
  14. EXCEL批量加入图片
  15. 基于leaflet-velocity的二维动态风场展示
  16. 在线教育20年:在线教育的未来发展趋势
  17. ad中按钮开关的符号_电工最常用电气元件实物图及对应符号
  18. 调节睡眠周期(有助睡眠)
  19. 微过滤器驱动开发指南
  20. 《Java核心技术卷一》读书笔记

热门文章

  1. V2V-PoseNet:Voxel-to-Voxel Prediction Network for Accurate 3D Hand and Human Pose Estimation from...
  2. OIM实现OIM用户修改、OIM用户Disable流程审批
  3. antd Table设置固定高度
  4. 爆肝!朋友做了个编程导航网站!
  5. 【学习】如何制作手机端html模板(REM的实际应用)
  6. 从底层逻辑聊日报设计与公司治理
  7. CVPR 2022 | Mobile-Former来了!微软提出:MobileNet+Transformer轻量化并行网络
  8. husky实现git commit规范
  9. webase1.5.3离线企业部署教程
  10. 计算机专业有哪些好的国企,这十大专业在国企中最受欢迎,待遇高、前景好,有你吗...