pygame 中的 surface.blit() 函数是什么?它有什么作用?它是如何工作的?
What is the surface.blit() function in pygame? What does it do? How does it work?
我是Python初学者,对surface.blit()
函数不是很清楚。它有什么作用?它是如何工作的?
关于如何创建它,我遇到了以下几点。
- 创建所需大小的canvas
- 创建一个包含要显示的对象的较小尺寸的表面。
- 定义曲面的 Rect 值。
- 在 canvas 的正确位置
上 Blit(重叠)表面
语法:canvas.blit(surface, surfacerect)
为什么只用rect?可以是其他形状吗?
尽管尽可能简单地说,但用实际的术语表达可能会有所帮助 -> blitting 正在绘制
完成您提到的每个步骤:
- 创建所需大小的canvas
这是我们的 window,由 screen = pygame.display.set_mode((width,height))
创建。其中 screen
是 canvas 名称。最终,所有内容都需要绘制到此 canvas 上,以便我们可以看到它。
- 创建一个包含要显示的对象的较小尺寸的表面
这是一个我们将填充图像等对象的表面。它不需要小于 window 大小,可以自由移动。
- 定义曲面的 Rect 值
当您使用 background = pygame.Surface((width,height))
之类的东西创建表面时,您指定它的大小。表面上的图像或绘制的项目可以是任何形状或大小,但它们必须全部包含在此宽度和高度设置的范围内。
- 在 canvas 的正确位置
上 Blit(重叠)表面
现在是最重要的一点。我们需要获取这个表面(背景)并将其绘制到 window 上。为此,我们将调用 screen.blit(background,(x,y))
,其中 (x,y) 是 window 中我们希望表面左上角所在的位置。此函数表示获取背景表面并将其绘制到屏幕上并将其定位在 (x,y)。
一个简单的例子:
import pygame
pygame.init()
#### Create a canvas on which to display everything ####
window = (400,400)
screen = pygame.display.set_mode(window)
#### Create a canvas on which to display everything ####
#### Create a surface with the same size as the window ####
background = pygame.Surface(window)
#### Create a surface with the same size as the window ####
#### Populate the surface with objects to be displayed ####
pygame.draw.rect(background,(0,255,255),(20,20,40,40))
pygame.draw.rect(background,(255,0,255),(120,120,50,50))
#### Populate the surface with objects to be displayed ####
#### Blit the surface onto the canvas ####
screen.blit(background,(0,0))
#### Blit the surface onto the canvas ####
#### Update the the display and wait ####
pygame.display.flip()
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
#### Update the the display and wait ####
pygame.quit()
我是Python初学者,对surface.blit()
函数不是很清楚。它有什么作用?它是如何工作的?
关于如何创建它,我遇到了以下几点。
- 创建所需大小的canvas
- 创建一个包含要显示的对象的较小尺寸的表面。
- 定义曲面的 Rect 值。
- 在 canvas 的正确位置 上 Blit(重叠)表面
语法:canvas.blit(surface, surfacerect)
为什么只用rect?可以是其他形状吗?
尽管尽可能简单地说,但用实际的术语表达可能会有所帮助 -> blitting 正在绘制
完成您提到的每个步骤:
- 创建所需大小的canvas
这是我们的 window,由 screen = pygame.display.set_mode((width,height))
创建。其中 screen
是 canvas 名称。最终,所有内容都需要绘制到此 canvas 上,以便我们可以看到它。
- 创建一个包含要显示的对象的较小尺寸的表面
这是一个我们将填充图像等对象的表面。它不需要小于 window 大小,可以自由移动。
- 定义曲面的 Rect 值
当您使用 background = pygame.Surface((width,height))
之类的东西创建表面时,您指定它的大小。表面上的图像或绘制的项目可以是任何形状或大小,但它们必须全部包含在此宽度和高度设置的范围内。
- 在 canvas 的正确位置 上 Blit(重叠)表面
现在是最重要的一点。我们需要获取这个表面(背景)并将其绘制到 window 上。为此,我们将调用 screen.blit(background,(x,y))
,其中 (x,y) 是 window 中我们希望表面左上角所在的位置。此函数表示获取背景表面并将其绘制到屏幕上并将其定位在 (x,y)。
一个简单的例子:
import pygame
pygame.init()
#### Create a canvas on which to display everything ####
window = (400,400)
screen = pygame.display.set_mode(window)
#### Create a canvas on which to display everything ####
#### Create a surface with the same size as the window ####
background = pygame.Surface(window)
#### Create a surface with the same size as the window ####
#### Populate the surface with objects to be displayed ####
pygame.draw.rect(background,(0,255,255),(20,20,40,40))
pygame.draw.rect(background,(255,0,255),(120,120,50,50))
#### Populate the surface with objects to be displayed ####
#### Blit the surface onto the canvas ####
screen.blit(background,(0,0))
#### Blit the surface onto the canvas ####
#### Update the the display and wait ####
pygame.display.flip()
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
#### Update the the display and wait ####
pygame.quit()