有点混淆(Pygame)

有点混淆(Pygame),第1张

有点混淆(Pygame) 简短的答案

我还没有找到可以解释何时需要刷屏或不在屏幕上包括特定表面的地方。

每个 *** 作的行为都会有所不同,并且您需要阅读所使用功能的文档。

长答案什么是斑点?

首先,您需要意识到blitting正在做什么。您的屏幕只是像素的集合,而blitting则是将一组像素完全复制到另一组像素上。例如,您可以使表面具有从硬盘驱动器加载的图像,并且可以通过多次在表面顶部刷写该表面来在屏幕上的不同位置多次显示该图像

screen

因此,您经常会有这样的代码…

my_image = load_my_image()screen.blit(my_image, position)screen.blit(my_image, another_position)

在两行代码中,我们通过“涂抹”将大量像素从源表面(my_image)复制到屏幕上。

pygame.draw。*函数如何播放?

从技术上讲,可以将pygame.draw。*方法编写为执行类似 *** 作。因此,代替您的示例…

pygame.draw.circle(screen, COLOR, POS, RADIUS, WIDTH)

他们本来可以做到的…

circle_surface = pygame.draw.circle(COLOR, RADIUS, WIDTH)screen.blit(circle_surface, POS)

如果是这种情况,您将获得相同的结果。但是,在内部,该

pygame.draw.circle()
方法直接 *** 作传递给它的曲面,而不是创建新曲面。可能已选择此方法作为执行 *** 作的方法,因为与创建新表面相比,它们可以使其运行速度更快或内存更少。

那我该怎么办?

因此,对于“何时何时出血”和“何时不出血”这一问题,基本上,您需要阅读文档以了解该功能的实际作用。

这是pygame.draw.circle()文档:

pygame.draw.circle():

在一个点上画一个圆

圆(表面,颜色,位置,半径,宽度= 0)->矩形

在表面上绘制圆形。pos参数是圆的中心,而radius是大小。width参数是绘制外边缘的厚度。如果width为零,则圆将被填充。

请注意,它说的是“在表面上绘制形状”,因此它已经为您完成了像素更改。而且,它不返回曲面(它返回Rect,但这只是告诉您像素更改在哪里完成)。

现在让我们看一下pygame.font.Font.render()文档:

在新的Surface上绘制文本

渲染(文本,抗锯齿,颜色,背景=无)->表面

这将创建一个具有指定文本的新S​​urface。Pygame没有提供直接在现有Surface上绘制文本的方法:相反,您必须使用Font.render()创建文本的图像(Surface),然后将此图像平铺到另一个Surface上。…

如您所见,它特别指出文本是在新曲面上绘制的,该曲面已创建并返回给您。该表面不是屏幕的表面(不能,甚至没有告诉

render()
函数屏幕的表面是什么)。这很好地表明了您实际上需要将此表面涂抹到屏幕上。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5617823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存