如何使 QColor::greenF 颜色值正好在 0 和 1 之间而不是四舍五入?
How to get QColor::greenF color value exactly between 0 and 1 instead of rounding off?
我有一个 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
?
But Orange color is 255,128,0
没有"the"橙色这样的东西。每个人都用同一个词称呼其他东西。橙色不是一种颜色,它是色调的范围。一旦您为它们分配了一些饱和度和亮度,这些色调就会变成颜色。有很多颜色可以使用每分量 8 位的 R、G、B 三元组来表示,它们都具有橙色的色调,因此符合 an橘子。没有橙色,
Whereas the green component must be 0.6. That is, it's rgb value is (255,128,0) or (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
。他们按应有的方式工作。
哦,你甚至没有提到房间里的大象 space 颜色。 RGB 三元组没有物理意义——它完全是抽象的——直到你将它映射到物理颜色 space。并且您最好使用经过校准的输出设备将您的颜色选择与用户交互,否则到处都是无休止的愚蠢。
我有一个 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
?
But Orange color is 255,128,0
没有"the"橙色这样的东西。每个人都用同一个词称呼其他东西。橙色不是一种颜色,它是色调的范围。一旦您为它们分配了一些饱和度和亮度,这些色调就会变成颜色。有很多颜色可以使用每分量 8 位的 R、G、B 三元组来表示,它们都具有橙色的色调,因此符合 an橘子。没有橙色,
Whereas the green component must be 0.6. That is, it's rgb value is (255,128,0) or (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
。他们按应有的方式工作。
哦,你甚至没有提到房间里的大象 space 颜色。 RGB 三元组没有物理意义——它完全是抽象的——直到你将它映射到物理颜色 space。并且您最好使用经过校准的输出设备将您的颜色选择与用户交互,否则到处都是无休止的愚蠢。