一.效果

二.原理

对于截图类工具,虽然有撤销功能,但是画图形、写文字等操作应该不是在原图上直接操作的。通常的做法有两种,一是在原图窗口上覆盖一层透明的窗口,所有的操作都在这层透明窗口上进行,最终保存的时候将透明窗口上的图形和原图合并成一张图片;二是直接在原图上覆盖一层和原图一样的窗口,直接在新窗口上对图片进行操作,最终直接保存新窗口的图片即可。本文使用方法二。

马赛克的原理是,将窗口等分成相同大小的正方形小块,正方形的宽度可以自定义,比如10像素,当鼠标滑动时,计算当前鼠标位置对应小块的左上角顶点,然后取出该顶点在图片中对应的颜色值(因为这里是直接在图片上操作,所以需要事先copy一份图片用于取色),当然这里直接取左上角顶点的颜色值比较暴力,更好的做法是计算小块的颜色均值。

撤销和重做的原理是,从鼠标按下到释放算是一次操作,鼠标释放时将图片压栈,撤销时将图片出栈,并将出栈的图片压入重做列表中......

三.实现

#include "QHMosaic.h"#include <QPainter>
#include <QCursor>
#include <QDebug>QHMosaic::QHMosaic(QWidget *parent): QWidget(parent), m_mosaicChunkSize(10)
{m_pixmap.load(":/Test.jpg");m_copyPixmap=

Qt实现QQ截图中的马赛克效果相关推荐

  1. Qt仿QQ截图最新版本,放大镜、坐标、颜色复制、画图形、文字、箭头、马赛克、序号都有,支持颜色面板,支持拖动和修改,支持撤销、钉住、屏幕录制

    史上最完整的QQ截图工具,1比1,高仿供学习,MulanPSL-2.0协议,Qt实现,可移植国产系统UOS/麒麟. 仿最新版QQ截图工具,功能完善. 文章目录 功能 效果 源码 使用 功能 支持窗口自 ...

  2. Qt 模仿QQ截图 动态吸附直线

    最近在学Qt.学东西怎么能不动手. 就写了些小程序.看QQ截图能够动态吸附直线的功能挺有意思,所以就模仿了一个. 先上效果图 界面很简单..呵呵 移动鼠标,会把鼠标所在最小矩形选中.把没有选中的地方给 ...

  3. OpenCV中的马赛克效果

    马赛克的原理,即将对应需马赛克处理区域内的像素,按小方块划分,将每一块小方块内不同颜色的像素使用同一颜色进行替代. 方法一: 方法一采用先缩小后放大的方式来对图片进行模糊处理.其效果不是特别明显,只是 ...

  4. 关于QQ截图中马赛克处理的想法

    设置两张图片,分上下两层放置,上层放置原图片,下层放置经过马赛克处理后的图片,绘制马赛克的时候,画笔经过一片区域,在原图中设置这片区域透明,便能看到下层的马赛克图片. 转载于:https://www. ...

  5. Qt仿QQ截图之QTextEdit宽高自适应

    之前用Qt做了个截图工具,最值得一写的就是在图片中添加文字时,如何让QTextEdit自适应文本的宽高 值得参考的是这篇博客:https://blog.csdn.net/kaida1234/artic ...

  6. python图片马赛克_Python实现PS滤镜中马赛克效果示例

    本文实例讲述了Python实现PS滤镜中马赛克效果.分享给大家供大家参考,具体如下: 这里利用 Python 实现PS 滤镜中的马赛克效果,具体的算法原理和效果可以参考附录说明,Python示例代码如 ...

  7. python开发ps插件_Python实现PS滤镜中马赛克效果示例

    Python实现PS滤镜中马赛克效果示例 发布时间:2020-08-29 06:02:24 来源:脚本之家 阅读:93 作者:Matrix_11 本文实例讲述了Python实现PS滤镜中马赛克效果.分 ...

  8. QQ截图的这些功能你知道吗?可以提高工作效率

    QQ是我们日常工作生活中常用的一个通讯软件,但是很多人可能没有注意QQ截图的一些功能,这些功能使用好了可以提高大家的工作效率. 1.矩形工具,可以画出矩形或者方形框 2.椭圆工具,可以画出椭圆或者圆形 ...

  9. 2020年7月win32 C\C++ API 写的仿QQ截图功能

    2020年7月win32 C\C++ API 写的仿QQ截图功能 近日,经常用到截图,但是没有QQ没有微信 的电脑上,截图非常不方便,起初打算网上随便找个类似的就算了,但是找了一下午,发现都是些很基础 ...

最新文章

  1. 用C#计算1000以内含1的数字
  2. SQL Server 2008创建数据库
  3. Windows系统安全管理
  4. wps不能打印_excel小技巧:在手机上的文件的保存、分享、打印
  5. php dvld.active 1,PHP的字符串
  6. 计算机怎么删除表格,电脑中删除Excel2010表格多余图片的三种方法
  7. Variant类型转换成CString代码
  8. OpenCV使用FileStorage保存Mat数据
  9. 算法笔记_面试题_数组/链表/跳表/各种数据结构复杂度对比
  10. 哪个服务器可以玩无限火力,lol无限火力2018开放时间 国服测试服已登录 网友:希望这次不要骗人!...
  11. VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——AlbumView相册控件的使用方式...
  12. bigemap 软件功能对比
  13. 运动控制卡培训--运动控制卡疑问解答l
  14. python 答题助手_MillionHerosHelper-超级答题助手
  15. Python获取实时的时间
  16. iOS 地图坐标说明
  17. Scala隐式转换的问题分析--String隐式转换为Int
  18. 用matlab绘制三维图和三视图
  19. 【剑指 Offe】剑指 Offer 17. 打印从1到最大的n位数
  20. java学习之SpringBoot2

热门文章

  1. 标定学习笔记(二)-- 张正友论文学习笔记
  2. 雪球python爬虫炒股_如何使用 Python 抓取雪球网页?
  3. 编写批量修改扩展名脚本
  4. 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp 寄存器 含义
  5. 基于js管理大文件上传以及断点续传
  6. Kindle接入HomeAssistant:实现锁屏壁纸显示HA内设备信息并在HA内获取Kindle电量
  7. 软件测试团队口号及队名,团队口号及队名精选
  8. 第十二周项目5-迷宫问题之图深度优先遍历解法
  9. 证明:DES解密算法是DES加密算法的逆
  10. Oracle 12c 数据库可插拔体系结构