屏幕取色器(Qt实现)(放大镜,RGB显示,智能调节)

运行效果:

程序细节:

自动调节放大镜显示位置

自动切换边框颜色

原理:

       首先给整个屏幕覆盖上一层高透明度的无边框窗口(这里我用的颜色为(255,255,255),且透明度为1 (【0,255】))

       通过定时器或线程实时更新鼠标位置,注意不要使用鼠标移动事件,如果通过鼠标移动来触发取色无法对动态视频取色

       通过截图函数,对整个窗口进行截图,其中选择以鼠标为中心的一块矩形,我选取的大小是10*7,而放大镜是100*70,故放大倍数为10,将这部分矩形图形放在放大镜中,且选取鼠标所在位置的像素颜色。

       选取的像素颜色因为有透明窗口的原因会有偏差,需要根据透明度算法恢复原来的颜色

       透明原理:假设B为透明色,透明度为a,A为底部颜色,C为最终显示颜色,255*C=a*B+(255-a)*A

       复原只需要根据公式求A即可

       当鼠标点击时,关闭透明窗口,发送颜色信号即可

使用说明:

      只需导入类文件,在所需窗口创建ColorPicker实例即可,由于继承自QWidget,调用show函数进行显示

      通过connect信号量 void QColorPicker::colorSelect(const QColor&)  可以获取选取的颜色

      注意导入连接图标文件,否则可能无法精准取色

配置说明:位于mousedropper.cpp中

const QSize winSize(100,100);       //窗口尺寸
const int grabInterval=50;          //刷新频率
const int magnificationTimes=10;    //放大倍数
const double split=0.7;             //分割
const int sizeOfMouseIcon=20;       //鼠标图标大小

图标素材:

       

QT项目文件:

蓝奏云:https://www.lanzous.com/i73allc

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Qt可以通过使用QComboBox控件来实现下拉菜单。在QComboBox中,可以添加需要显示的选项,并通过信号和槽机制来处理用户选择的选项。例如,在模拟wps中需要一个下拉菜单来选择字体大小,可以创建一个QComboBox控件,将可选的字体大小添加到其中,然后在用户选择完成后,根据用户选择的字体大小来进行相应的处理。 颜色选择器可以使用QColorDialog来实现。QColorDialog是一个对话框窗口,其中包含了各种颜色,并且可以让用户选择颜色。我们可以通过调用其静态方法getColor()来获取用户选择的颜色。例如,在模拟wps中需要用户选择字体颜色,可以通过调用QColorDialog::getColor()方法来让用户选择颜色,然后将选择的颜色应用到文本中。 屏幕取色器可以使用QScreen类来实现。QScreen类提供了一些用于操作屏幕的方法,包括获取屏幕上某个位置的颜色。我们可以使用QScreen::grabWindow()方法来获取屏幕上指定窗口的截图,然后使用QImage的pixel()方法来获取特定位置的颜色值。例如,在模拟wps中需要用户取色,可以通过获取当前屏幕上鼠标所在位置的颜色值,并将其应用到文本中。 通过以上的方法,我们可以在Qt实现模拟wps中的下拉菜单、颜色选择器和屏幕取色器功能。这些控件和类在Qt中都有相应的文档和示例代码,可以参考官方文档和例子进行具体的实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值