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

时间:2012-01-15 20:43:11

标签: python image pygame

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

4 个答案:

答案 0 :(得分:13)

这是典型的布局:

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()

答案 1 :(得分:3)

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()

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

答案 2 :(得分:2)

在绘图界面上使用blit或任何其他更新后,您必须致电pygame.display.flip()以实际更新显示的内容。

答案 3 :(得分:0)

图像由"pygame.Surface"个对象表示。可以使用pygame.image.load从图像创建表面

my_image_surface = pygame.load.image('my_image.jpg')

但是,pygame文档指出:

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

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

image_surface = pygame.load.image('my_image.jpg').convert()
alpha_image_surface = pygame.load.image('my_icon.png').convert_alpha()

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

window_surface.blit(image_surface, (x, y))
window_surface.blit(image_surface,
    image_surface.get_rect(center = window_surface.get_rect().center))

最小示例:

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()

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

如果要在PyGame中使用其他库加载的图像,请参见:

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

加载动画GIF文件的位置:

或者查看如何加载NumPy帧: