RGS*_*RGS 3 python pygame colors python-3.x
正如可以在 pygame 文档中读到的那样,一个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)
Run Code Online (Sandbox Code Playgroud)
打印出意想不到的结果,即
(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)
Run Code Online (Sandbox Code Playgroud)
这清楚地表明我无法分配给该.hsva
属性(将“hsva”更改为“hsla”显示了相同的不稳定行为)。此外,在定义新颜色并尝试更改颜色后,.hsva
颜色会完全改变。
我错过了什么还是这是一个错误?
为了让其他人更容易在将来访问这个问题时快速获得有用的东西,让我在回答中总结一下讨论的结果:
问题中提供的代码没有显示 Pygame 中的错误,也没有显示任何意外的行为。
要理解其.hsva get/set
按预期工作,有必要充分了解 Pygame 中的配色方案如何工作,不要错误地认为更改色调会自行更改颜色,而不管饱和度和值如何。
pygame.color 对象在内部将颜色值存储为 RGB。
因此,如果饱和度和值都为 0,则色调根本不会影响 RGB 值 - 它们将全部为零。因此,当您询问其 RGB 值的 hsva 表示形式时,色调可以是任何值,并且默认值似乎为零。
任何色调,但饱和度和值为零,在 RGB 中都将表示为 (0, 0, 0)。因此,改变色调不会影响 RGB。
归档时间: |
|
查看次数: |
1719 次 |
最近记录: |