Pygame开发中如何实现GameImage类主图像居中blit绘制
Pygame GameImage实例居中绘制解决方案
核心修改逻辑
你自定义的GameImage类已经内置了对应图像的rect属性,和文本居中的实现逻辑完全一致,直接设置该rect的center属性为屏幕中心坐标即可。
具体修改步骤
- 在
GameScene类的__init__初始化方法中添加居中配置,避免每次绘制时重复计算坐标:
def __init__(self, game, images, main_image, next_scene): super().__init__(next_scene) self.game = game self.main_image = main_image # 新增:设置主图像rect居中 self.main_image.rect.center = (SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2) self.game_images = images # 其余原有初始化代码保持不变...
- 修改
GameScene类draw方法中的主图像绘制逻辑,替换原有的硬编码坐标写法:
def draw(self, screen): super().draw(screen) if self.part == 1: screen.blit(self.record_text, self.record_text_rect) # 替换原有blit行,直接调用GameImage自带的draw方法即可 self.main_image.draw(screen) else: # 其余原有绘制代码保持不变...
原理说明
pygame的Rect对象的center属性赋值后,会自动根据绑定图像的宽高计算出正确的左上角坐标,完全匹配blit方法的坐标要求,不会再出现左上角对齐中心点的偏移问题。如果后续主图像的尺寸会动态更新,只需在尺寸变更后重新执行一次self.main_image.rect.center = (SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2)即可。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

