持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
pygame 使用曲面对象
将图像加载到Pygame中是用一个简单的单行完成的;皮游戏。图像。load 采用要加载的图像的文件名,并返回一个表面对象,该对象是图像的容器。表面可以代表许多类型的图像,但Pygame隐藏了大部分这些细节,因此我们可以以大致相同的方式处理它们。一旦内存中有一个表面,就可以在上面绘制,转换它,或将其复制到另一个表面以构建图像。甚至屏幕也表示为表面对象。初始调用
pygame.display.set_mode返回表示显示的表面对象。
创建曲面
对皮游戏的呼唤。图像。载荷是创建曲面的一种方法。它会创建与图像文件的颜色和尺寸匹配的表面,但您也可以创建空白
您需要的任何大小的表面(假设有足够的内存来存储它)。要创建空白曲面,请调用 pygame 。具有包含所需尺寸的元组的曲面构造函数。以下线条创建一个 256 x 256 像素的曲面:blank_surface = pygame。表面((256, 256))
如果没有任何其他参数,这将创建一个颜色数量与显示。这通常是您想要的,因为当图像具有相同数量的颜色时,复制图像会更快。
还有一个用于pygame的深度参数。定义曲面的颜色深度的曲面。这类似于pygame.display.set_mode中的深度参数,并定义了曲面中的最大颜色数。通常最好不要设置此参数(或将其设置为0),因为Pygame选择与显示匹配的深度 - 尽管如果您希望在表面上显示alpha信息,则应将深度设置为32。以下线条创建一个包含 Alpha 信息的曲面:
转换曲面
当您使用表面对象时,您不必担心图像信息如何存储在内存中,因为Pygame会向您隐藏此细节。因此,大多数情况下,图像格式是您不必担心的,因为无论您使用哪种类型的图像,您的代码都可以工作。这款自动腕表的唯一缺点
转换是,如果您使用的是不同格式的图像,Pygame将不得不做更多的工作,这可能会降低游戏性能。解决方案是将所有图像转换为相同的格式。曲面对象具有用于此目的的转换方法。
如果在没有任何参数的情况下调用 convert,则曲面将转换为显示曲面的格式。这很有用,因为当源和目标类型相同时,复制表面的速度通常最快,并且大多数图像最终将被复制到显示器上。最好在 上贴上.将 () 转换为
皮游戏。图像。加载以确保您的图像以最快的显示格式显示。例外情况是当您的图像具有 Alpha 通道时,因为转换可以丢弃它。幸运的是,Pygame提供了一种convert_alpha方法,该方法将表面转换为快速格式,但保留图像中的任何alpha信息。我们在上一章中使用了这两种方法;以下两行取自清单 3-1:
背景只是一个实心矩形,所以我们使用转换。但是,鼠标光标具有不规则的边缘,需要 alpha 信息,因此我们称之为convert_alpha。转换和convert_alpha都可以将另一个曲面作为参数。如果提供了一个曲面,则该曲面将被转换以匹配另一个曲面。
请记住,要使用前面的行,您需要一个已经定义的表面对象;否则,您将收到错误,因为未指定视频模式。