使用pygame绘制图像的好方法是什么?

jtl*_*999 11 python pygame image

我想知道如何使用pygame绘制图像.我知道如何加载它们.我做了一个空白的窗口.当我使用screen.blit(空白,(10,10))时,它不会绘制图像而是将屏幕留空.

joa*_*uin 14

这是典型的布局:

myimage = pygame.image.load("myimage.bmp")
imagerect = myimage.get_rect()

while 1:
    your_code_here

    screen.fill(black)
    screen.blit(myimage, imagerect)
    pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)


Rab*_*d76 7

图像由“pygame.Surface”对象表示。可以使用以下命令从图像创建表面pygame.image.load

my_image_surface = pygame.load.image('my_image.jpg')
Run Code Online (Sandbox Code Playgroud)

然而,Pygame 文档指出:

返回的 Surface 将包含与其来源文件相同的颜色格式、颜色键和 alpha 透明度。您通常希望convert()不带参数进行调用,以创建一个可以更快地在屏幕上绘制的副本。
对于 Alpha 透明度(如 .png 图像),请convert_alpha()在加载后使用该方法,以便图像具有每像素透明度。

使用适当的转换方法以获得最佳性能:

image_surface = pygame.load.image('my_image.jpg').convert()
Run Code Online (Sandbox Code Playgroud)
alpha_image_surface = pygame.load.image('my_icon.png').convert_alpha()
Run Code Online (Sandbox Code Playgroud)

使用该方法可以在另一个Surface上绘制Surface或与另一个Surfaceblit混合。blit 的第一个参数是应该绘制的Surface 。第二个参数是表示左上角的元组 ( x , y ) 或矩形。对于矩形,仅考虑矩形的左上角。应该提到的是,窗口分别显示也是由Surface表示的。因此,在窗口中绘制Surface与在Surface上绘制Surface相同:

window_surface.blit(image_surface, (x, y))
Run Code Online (Sandbox Code Playgroud)
window_surface.blit(image_surface,
    image_surface.get_rect(center = window_surface.get_rect().center))
Run Code Online (Sandbox Code Playgroud)

最小的例子:

import pygame

pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()

pygameSurface = pygame.image.load('apple.png').convert_alpha()

run = True
while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    window.fill((127, 127, 127))
    window.blit(pygameSurface, pygameSurface.get_rect(center = window.get_rect().center))
    pygame.display.flip()

pygame.quit()
exit()
Run Code Online (Sandbox Code Playgroud)

pygame.image.load可以加载大多数图像。根据文档,支持以下格式:JPG、PNG、GIF(非动画)、BMP、PCX、TGA(未压缩)、TIF、LBM(和 PBM)、PBM(和 PGM、PPM)、XPM。

如果你想在 Pygame 中使用加载了其他库的图像,请参阅:

有关加载可缩放矢量图形(SVG) 文件的信息,请参阅:

加载动画 GIF 文件位于:

或者查看如何加载NumPy帧:


Joh*_*ato 5

import pygame, sys, os
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((100, 100))

player = pygame.image.load(os.path.join("player.png"))
player.convert()

while True:
    screen.blit(player, (10, 10))
    pygame.display.flip()

pygame.quit()
Run Code Online (Sandbox Code Playgroud)

加载文件player.png。运行它,它完美地工作。所以希望你能学到一些东西。