【发布时间】:2022-08-13 13:15:47
【问题描述】:
我想知道如何使用 pygame 绘制图像。我知道如何加载它们。
我做了一个空白窗口。
当我使用screen.blit(blank, (10,10)) 时,它不会绘制图像,而是将屏幕留空。
-
你用谷歌搜索了
draw images pygame吗?在我的电脑中,我得到了一些有用的文档和教程 -
我们在谈论 .png 类型的图像吗?
我想知道如何使用 pygame 绘制图像。我知道如何加载它们。
我做了一个空白窗口。
当我使用screen.blit(blank, (10,10)) 时,它不会绘制图像,而是将屏幕留空。
draw images pygame 吗?在我的电脑中,我得到了一些有用的文档和教程
这是一个典型的布局:
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()
【讨论】:
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。
运行它,它可以完美运行。所以希望你能学到一些东西。
【讨论】:
pygame.quit() 永远不会被执行,true 应该是 True
convert()返回新形象;它不会就地更改图像。所以player.convert() 什么都不做。
在您的绘图表面上使用blit 或任何其他更新后,您必须调用pygame.display.flip() 来实际更新显示的内容。
【讨论】:
图像由"pygame.Surface" 对象表示。一个表面可以从带有pygame.image.load 的图像创建:
my_image_surface = pygame.load.image('my_image.jpg')
但是,pygame 文档指出:
返回的 Surface 将包含与其来源文件相同的颜色格式、颜色键和 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 的第一个参数是表面应该画的。第二个参数是一个元组 (X,是的) 表示左上角或矩形。对于矩形,只考虑矩形的左上角。需要说明的是,窗口分别显示也是用a表示的表面.因此,绘制一个表面在窗口中画一个是一样的表面在一个表面: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 中使用与其他库一起加载的图像,请参阅:
- PIL and pygame.image
- How do I convert an OpenCV (cv2) image (BGR and BGRA) to a pygame.Surface object
有关加载可缩放矢量图形 (SVG) 文件的信息,请参阅:
加载动画 GIF 文件显示在:
- How can I load an animated GIF and get all of the individual frames in PyGame?
- How do I make a sprite as a gif in pygame?
或查看如何加载NumPy 帧:
【讨论】: