c++ - 如何让 QColor::greenF 颜色值恰好在 0 和 1 之间而不是四舍五入?
问题描述
我有一个QColor
值,我需要将其分解为 0 到 1 之间的 RGB 分量,小数点后只有一个值。
例如:Orange color
是
QColor color = QColor(255,128,0)
qreal green = color.greenF();
qDebug() << green; //0.501960784
而绿色组件必须是0.6
. 也就是说,它rgb value is (255,128,0) or (1,0.6,0).
如何得到0.6
而不是0.501960784
?
解决方案
但是橙色是 255,128,0
没有“橙色”这样的东西。每个人都用同一个词来称呼别的东西。橙色不是一种颜色,它是一系列色调。一旦你为它们分配了一些饱和度和亮度,这些色调就会变成颜色。有很多颜色可以使用每个组件 8 位的 R、G、B 三元组来表示,它们都具有橙色的色调,因此可以称为橙色。没有橙子,
而绿色分量必须是 0.6。也就是说,它的 rgb 值为 (255,128,0) 或 (1,0.6,0)。
它不是。QColor
告诉你,基础数学也告诉你。颜色显然是1/0.6/0
,或1*255, 6/10*255, 0*255
,或255, 1530/10, 0
或255, 153, 0
完全。永远不会255,128,0
,我不知道是谁告诉你的,但他们错了。
所以这很简单:忘记这一切。只需使用QColor::redF
,greenF
和blueF
。他们以应有的方式工作。
哦,你甚至没有提到房间里的大象是色彩空间。RGB 三元组没有物理意义——它完全是抽象的——直到你将它映射到物理色彩空间。你最好使用校准的输出设备来将你的颜色选择与用户联系起来,否则周围将是无穷无尽的愚蠢。
推荐阅读
- java - 需要一个正则表达式“仅在 $ 符号之后我应该接受我给出的特定字符串
- reactjs - 渲染如何与 React 中的一组组件一起工作
- python - conda-build 错误地抱怨 meta.yaml 中不包含依赖项
- php - 创建 apache 别名而不访问 .conf 文件
- javascript - heroku 上上传的前端-后端 docker 图像之间的通信
- c++ - 如何修复 C++ 中的“指针和整数之间的比较”错误?
- python - 如何为不使用 Estimator 训练的 Tensorflow 模型编写服务输入函数?
- opengl - 将 OpenGL 与 QtQuickPainted 项目一起使用
- mysql - 连接查询中的 SET 表名
- java - JSON 读取对象值