的HSVA/HSLA属性作为一个可在pygame的文档here在读,一个pygame.Color
对象具有两个不同的属性,即pygame.Color.hsva
和pygame.Color.hsla
可以读取并分配给。无法设置pygame.Color
但是,我似乎无法做到这一点。事实上,运行脚本
import pygame
from pygame import Color as C
pygame.init()
t = (100, 0, 0, 100)
c = C(0,0,0)
print(c.hsva)
c.hsva = t
print(c.hsva)
c = C(100, 45, 10)
print(c.hsva)
c.hsva = t
print(c.hsva)
打印意想不到的结果,即
(0.0, 0.0, 0.0, 100.0)
(0.0, 0.0, 0.0, 100.0)
(23.333333333333336, 89.99999999999999, 39.21568627450981, 100.0)
(0.0, 0.0, 0.0, 100.0)
这清楚地表明,我不能够分配给.hsva
属性(改变“HSVA”到“HSLA”显示同样的不稳定行为)。此外,在定义新颜色并尝试更改.hsva
后,颜色完全改变。
我错过了什么,或者这是一个错误?
pygame.color对象将内部的颜色值存储为RGB,从我所知道的情况来看。所以如果饱和度和数值均为0,则色调根本不会影响RGB值 - 它们将全部为零。所以,当你问它的RGB值的hsva表示时,色调可能是任何东西,而且它似乎默认为零。但问题是,如果饱和度和数值为零,为什么要关心色调? –
@RandomDavis我认为改变色调会改变颜色本身,无论饱和度和价值。所以也许我唯一的问题是我没有完全意识到配色方案是如何工作的。 – RGS
没错。任何东西的色调,但饱和度和零值,将在RGB中表示为(0,0,0)。因此,改变色调不会影响RGB。但是,这只是假设它只在RGB内部存储颜色,这似乎是这种情况。 –