gpt4 book ai didi

python - 在 PyGame 中混合 per-alpha 和颜色键的解决方法

转载 作者:行者123 更新时间:2023-11-28 18:47:06 25 4
gpt4 key购买 nike

所以我正在尝试编写一个函数来生成一个表面,该表面堆叠我绘制的两个 png,并且能够在一个上打洞,以便另一个显示出来。

我有一张宇宙飞船的外观图。(self.origImage)

我还有一张同一艘宇宙飞船内部的图纸。(self.baseImage)

我还有一张伤害图。(pygame.image.load('Damage1.png'))

损坏图是一个 png,边缘具有每像素 alpha 透明度,中心逐渐不透明的黄色和橙色,中间是紫色。 ('#770777')

想法是将损坏转移到飞船外部。看起来就像有人在一艘满是紫色的宇宙飞船上开了一个洞。那部分有效。然后我想为那个紫色设置一个色键,并将整个东西 blit 到内部绘图上,这样你就可以看到里面的东西而不是紫色。

这是我的尝试。每当施加新的伤害时它都会运行并且它大部分都有效,但紫色不会转换。

def generateImage(self):
self.buildImage = self.origImage.copy()
for x in range(len(self.objectSquares)):
for y in range(len(self.objectSquares[x])):
if self.objectSquares[x][y].health < 10:
self.buildImage.blit(pygame.image.load('Damage1.png'), ((x*10), (y*10)))


self.buildImage = self.buildImage.convert()
self.buildImage.set_colorkey(pygame.Color('#770777'))
self.compImage = pygame.Surface(self.buildImage.get_size()).convert()
self.compImage.blit(self.baseImage, (0, 0))
self.compImage.blit(self.buildImage, (0, 0))

我还尝试从损坏的绘图中获取色键,以确保不是我的绘画程序压缩了图像或其他东西。

self.buildImage.set_colorkey(pygame.image.load('Damage1.png').convert().get_at((5, 5)))

self.buildImage.set_colorkey(pygame.image.load('Damage1.png').get_at((5, 5)))

以及其他各种组合。

有人看到我做错了什么吗?我很感激你的帮助!

最佳答案

来自文档:set_colorkey()

The colorkey will be ignored if the Surface is formatted to use per pixel alpha values. The colorkey can be mixed with the full Surface alpha value.

尝试使用 convert_alpha() 并在与您的颜色键匹配时手动将每像素值设置为 alpha。

pygame.transform.threshold()可能会为您做第二部分。

关于python - 在 PyGame 中混合 per-alpha 和颜色键的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18348880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com