正如您可以在 pygame 文档中看到的那样 here ,一个pygame.Color
对象有两个不同的属性,分别是pygame.Color.hsva
和pygame.Color.hsla
,可以读取和赋值到。
不过,我好像做不到。其实就是运行脚本
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
后,颜色会完全改变。
我是不是遗漏了什么或者这是一个错误?
最佳答案
为了让其他人在以后访问这个问题时更容易快速获得有用的东西,让我在答案中总结一下讨论的结果:
The in the question provided code does not show a bug in Pygame nor does it show any unexpected behavior.
要理解 .hsva get/set
按预期工作,有必要充分了解配色方案在 Pygame 中的工作方式,不要错误地认为改变色调会改变颜色本身,不管饱和度和值(value)。
The pygame.color object stores the color value internally as RGB.
所以如果饱和度和明度都为0,色调不会影响 根本没有 RGB 值 - 它们将全部为零。所以,当你问它 对于其 RGB 值的 hsva 表示, 色调可以是任何东西,而且默认值似乎为零。
将表示任何色调,但饱和度和值为零 在 RGB 中为 (0, 0, 0)。因此,改变色调不会对 RGB 产生任何影响。
关于python - 无法设置 pygame.Color 的 hsva/hsla 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43419188/