Qt自定义ColorDialog(支持RGB和HSV)

文章目录

当我们做软件开发的时候,经常需要编辑颜色,有时需要同时编辑RGB和HSV的颜色。

完整代码下载
https://github.com/douzhongqiang/QtCustomColorDialog

这是一个自定义的颜色对话框,如下图所示
ColorDialog
具有如下功能:

  1. 支持RGB和HSV颜色值得修改和预览
  2. 支持添加自定义颜色(点击按钮添加或鼠标拖拽添加)

修改颜色效果预览:
编辑颜色
添加自定义颜色效果预览:
添加到自定义颜色
颜色控件效果预览:
颜色控件
下面是主要用到得技术点说明

 

1. HSV和RGB

RGB想必大家都不默认,但是实际生活中更为常用的是HSV颜色空间
H: 表示 色调 ,取值为0~355,使用度数表示它的值,0度为红色,120度为绿色,240度为蓝色。
HValue
S: 表示色彩的 饱和度 ,取值范围为0~255,饱和度值越大,他的颜色就越丰满。
V: 表示 亮度 ,取值范围为0~255,0为黑色,值越大则约明亮。

Qt中使用 QColor 类可以方便的设置和获取RGB颜色和YUV颜色值:

  • 函数 getRgb()rgb() 可以设置和获取RGB颜色值
  • 函数 setHsv()getHsv() 可以设置和获取HSV颜色值
 

2. H分量圆盘绘制

因为H分量是根据度数决定的,这里使用类 QConicalGradient 设置画刷来绘制渐变效果,
关键代码如下:

渐变位置值设置范围为 0~1 ,其中 m_colorVec 是一个 QVector<QColor> 类型的成员变量
初始化代码如下:

分别对应上图 0~360度的颜色值。

 

3. SV画布绘制

画布的 X轴从左到右表示S值从0~255
Y轴从下到上表示V值从0~255
如下所示:
SV表示
绘制方法:

  1. 先绘制从最左侧颜色值为白色RGB(255,255,255)到最右侧HSV(h,255,255)的渐变
  2. 再绘制从最顶部颜色值为RGBA(0, 0, 0, 0)到最底部RGBA(0, 0, 0, 255)的渐变

关键代码如下:

You May Also Like

About the Author: admin

喜欢编程、爱游戏,更爱生活。

发表评论

电子邮件地址不会被公开。