pygame.Color

本文详细介绍了pygame项目中的颜色对象Color及其使用方法。Color对象可用于描述RGBA颜色值,并支持多种颜色空间转换,如HSV和HSL。此外,还介绍了Color对象的一些属性和方法,如r、g、b、a等。

pygame .Color

pygame 项目中用于描述颜色的对象。

Color(name) -> Color

Color(r, g, b , a) -> Color

Color(rgbvalue) –>Color

方法&属性

pygame.Color.r                     ——获取或者设置Color对象的红色值

pygame.Color.g                     ——获取或者设置Color对象的绿色值

pygame.Color.b                     ——获取或者设置Color对象的蓝色值

pygame.Color.a                      ——获取或者设置Color对象的alpha值

pygame.Color.cmy                  ——获取或者设置Color对象的cmy值

pygame.Color.hsva                  ——获取或者设置Color对象的hsav值

pygame.Color.hsla               ——获取或者设置Color对象的hsla值

pygame.Color.i 1i2i3            ——获取或者设置Color对象的I1I2I3描述

pygame.Color.normalize   — 返回一个Color对象的RGBA(显示通道)值

pygame.Color.correct gamma —Color对象请求一个确定gamma值

pygame.Color.set length —设置在Color对象中元素的数值为1,2,3,或4

        颜色类用于描述RGBA(显示通道)在0-255范围内的值,它允许基本算法操作——二进制运算,+,-,*,//,%, 还有一元运算~——创建新的颜色,支持对其他颜色空间的转变,比如你可以调整HSV(HSV色彩模型(Hue色度,Saturation饱和度,Value 纯度))或者HSL(HSL色彩模式是工业界的一种颜色标准,是通过对色相(H)、饱和度(S)、明度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色相,饱和度,明度三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一)单一的颜色通道。没有给定情况下,Alpha的默认值为255。算法运算correct_gamma()(伽马修正函数)保留子类。对于二元操作符,返回颜色的类是操作符的左侧插入颜色对像。

      

“rgb值”可以是一个颜色的名字,一个HTML(超文本标记语言超文本标识语言网页动态)颜色格式字符串,一个十六进制数字符串,或者一个整型像素值,HTML格式是“#rrggbbaa”,rr,gg,bb,aa是2-characater十六进制数,对于alpha通道,aa是可选的,A十六进制数字符串形式为“0xrrggbbaa”,aa可选。

Color对象支持与其他颜色并且3个或者4个整数元组对等比较(New in 1.9.0),在pygame1.8.1中有bug,alpha通道默认值是0,而不是之前的255。

Color对象输出C级数组界面,该界面输出一个只读的一维无符号字节数组,其长度与颜色相同。对于Cpython2.6及更早版本,新的缓冲区界面也被输出,具有与数组相同的特征。在pygame1.9.2中能够实现。

地板除,//,求余数,%,不会在0处引起异常,但是,如果一种颜色,或者alpha,通道在右方插入颜色为0,结果得0.例如:

## These expressions areTrue(这些表达式是正确的)

Color(255,255,255,255)//Color(0,64,64,64)==Color(0,3,3,3)

Color(255,255,255,255)%Color(64,64,64,0)==Color(63,63,63,0)

颜色的新实现实在pygame 1.8.1中实现的。

r

获取或者设置Color对象的红色值

r   —> int

Color对象的红色值

 

g

获取或者设置Color对象的绿色值

g —>int

Color对象的绿色值

 

b

获取或者设置Color对象的蓝色值

b —>int

Color对象的蓝色值

 

a

获取或者设置Color对象的alpha值

a —> int(整型)

Color对象的alpha值

 

 

cmy

获得或者设置Color对象的cmy属性

cmy —> tuple(元组)

CMY(减色系统)是Color对象的一个属性,CMY组件的范围是C=[0,1],M=[0,1],Y=[0,1]

 要注意的是,设置了RGB值的所有情况下,将不会返回绝对准确的CMY值,由于RGB的映射是从0-255,并且,CMY的映射是从0-1舍入误差可能导致CMY对象的HSAV属性

hsva—> tuple

HSVA是Color对象的一个属性,HSVA组件的范围是H=[0,360],S=

[0,100],V=[0,100],A=[0,100],要注意的是,设置了RGB值的所有情况下,将不会返回绝对准确的HSAV值,由于RGB的映射范围是0-255,并且HSAV的映射范围从0-100和0-360的舍入误差,可能会导致HSAV的值与你预测的略有不同。

 

 

hsla

获取或者设置Color对象的HSLA属性

hsla —> tuple

HSLA是Color对象的一个属性,HSLA组件的范围是H=[0,360],S=

[0,100],L=[0,100],A=[0,100],要注意的是,设置了RGB值的所有情况下,将不会返回绝对准确的HSLA值,由于RGB映射的范围从0-255

 

,并且,HSLA的映射是从0-100和0-360的舍入误差,可能会导致HSLA的值与你预测的略有不同。

 

i1i2i3

获取或者设置Color 对象的I1I2I3属性

i1i2i3 —> tuple

I1I2I3是Color对象的一个属性,I1I2I3组件的范围是I1=[0,1],I2=[-0.5,0.5],

I3=[-0.5,0.5]。要注意的是,设置了RGB值的所有情况下,将不会返回绝对准确的I1I2I3值,由于RGB的映射范围是从0-255并且I1I2I3的映射范围是从0-1的舍入误差,可能会导致I1I2I3的值与你预测的略有不同。

 

normalize()

返回Color对象的标准化RGBA值

normalize() —>tuple

将颜色的标准化RGBA值作为浮点值返回

 

correct_gamma()

Color对象请求一个确切的gamma值

correct_gamma(gamma) —>Color

Color对象请求一个确切的gamma值并且返回一个由RGBA值调整的新颜色。

 

set_length()

设置在Color对象中对于1,2,3,或者4等元素的值

set_length(len) —>None

默认Color长度为4。Color长度可以是1,2,3,或者4。

如果在没有r,g,b,a的情况下想解包r,g,b,的时候是非常有用。

如果你想获得一个Color生成的字符串长度。


     



import pygame import random import math from pygame.locals import * class Particle: def __init__(self, pos, angle, speed, color): self.pos = list(pos) self.angle = angle self.speed = speed * random.uniform(0.8, 1.2) self.color = color self.age = 0 self.lifetime = random.randint(40, 60) self.gravity = 0.5 self.alpha = 255 def update(self): self.pos[0] += math.cos(self.angle) * self.speed self.pos[1] += math.sin(self.angle) * self.speed + self.gravity self.speed *= 0.95 self.age += 1 self.alpha = max(0, 255 - (255 * self.age / self.lifetime)) def draw(self, surface): if self.alpha > 0: size = max(2, int(4 * (1 - self.age/self.lifetime))) pygame.draw.circle(surface, self.color + (self.alpha,), (int(self.pos[0]), int(self.pos[1])), size) class Firework: def __init__(self, screen_width, screen_height): self.particles = [] self.screen_width = screen_width self.screen_height = screen_height hue = random.randint(0, 360) self.color = pygame.Color(0) self.color.hsla = (hue, 100, 50, 100) # 初始发射位置 start_pos = (random.randint(100, screen_width-100), screen_height) for _ in range(200): angle = random.uniform(0, 2*math.pi) speed = random.uniform(2, 8) self.particles.append(Particle(start_pos, angle, speed, self.color)) def update(self): return [p for p in self.particles if p.age < p.lifetime] def main(): pygame.init() WIDTH, HEIGHT = 800, 600 screen = pygame.display.set_mode((WIDTH, HEIGHT)) clock = pygame.time.Clock() fireworks = [] running = True while running: screen.fill((0, 0, 0)) # 随机生成新烟花 if random.random() < 0.05: fireworks.append(Firework(WIDTH, HEIGHT)) 28行有报错,如何
03-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值