我有一棵树的64*64 of图像:

我希望在运行时将此图像调整为全屏模式。我试图为此编写一些代码(见下文)。在执行这个程序之后
import pygame, sys
pygame.init()
info = pygame.display.Info()
WINDOWHEIGHT = info.current_h
WINDOWWIDTH = info.current_w
DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH,WINDOWHEIGHT),pygame.FULLSCREEN)
spriteImage = pygame.image.load('Sprite-0003.png')
spriteSurf = pygame.Surface((WINDOWWIDTH,WINDOWHEIGHT))
pygame.transform.scale(spriteImage, (WINDOWWIDTH,WINDOWHEIGHT), spriteSurf)
def close():
    pygame.quit()
    sys.exit()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            close()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                close()
    DISPLAYSURF.blit(spriteSurf, (0,0))
    pygame.display.update()我得到了这个结果图像。比较它们的颜色:

我的程序在什么时候决定改变这两幅图像的颜色?我该怎么解决呢?
发布于 2016-07-04 11:48:55
首先:看看pygame.image.load():
对于alpha透明性,就像在.png图像中一样,在加载后使用convert_alpha()方法,使图像具有每个像素的透明度。
http://www.pygame.org/docs/ref/image.html#pygame.image.load
第二:来自文档的Blit函数和每个标志的堆栈溢出说明:
blit(源,area=None,special_flags = 0) -> Rect 一个可选的特殊标志用于在1.8.0中传递新的( BLEND_ADD、BLEND_SUB、BLEND_MULT、BLEND_MIN、BLEND_MAX new在1.8.1中):BLEND_RGBA_ADD、BLEND_RGBA_SUB、BLEND_RGBA_MULT、BLEND_RGBA_MIN、BLEND_RGBA_MAX BLEND_RGB_ADD、BLEND_RGB_SUB、BLEND_RGB_MULT、BLEND_RGB_MIN、BLEND_RGB_MAX,以及将来可能添加的其他特殊闪电号。 对于带有颜色键或毯子α的表面,blit to self可能会给出与非自blit稍微不同的颜色。
基本上,ADD添加两个源像素并在255处剪辑结果。在0处减去两个像素和剪辑。
MULT: result = (p1 * p2) / 256MIN:选择每个通道的较低值(不是整个像素),所以如果pixel1是(100,10,0),而pixel2是(0,10,100),则得到(0,10,0)。
MAX: Opposite of MIN (i.e. (100,10,100))还有一种额外的混合模式,这在docs中并不明显:0(或者将参数排除在外)。此模式将“盖章”源表面到目标。如果源面有一个alpha通道,这将决定每个像素是否“强”为(0=no effect, 255=copy pixel, 128: result = .5*source + .5*destination).。
有用的效果:要使某一区域变暗,使用混合模式0,填充源/邮票表面黑色,并将alpha设置为10:(0,0,0,10)。
要减轻它,请使用白色(255,255,255,10)。
我想你的问题来自阿尔法频道。
所以:
spriteImage = pygame.image.load('Sprite-0003.png').convert_alpha()Fom:
http://www.pygame.org/docs/ref/surface.html#pygame.Surface.blit
发布于 2016-07-04 12:02:05
源曲面(来自图像)和目标曲面不使用相同的彩色键。
使用默认构造函数pygame.Surgafe,您将得到一个没有默认初值的曲面。
曲面可以有许多额外的属性,如alpha平面,彩色键,源矩形裁剪。这些功能主要影响曲面如何被切割到其他表面。blit例程将尝试在可能的情况下使用硬件加速,否则它们将使用高度优化的软件闪存方法。
让我们考虑复制初乳,或者(最好)克隆图像曲面并对其进行缩放。
https://stackoverflow.com/questions/38183713
复制相似问题