【问题标题】:Pygame - blitting from x and y cordinates of imagePygame - 从图像的 x 和 y 坐标进行 blitting
【发布时间】:2021-04-25 22:19:01
【问题描述】:

我正在尝试减少我的 pygame 项目所需的文件数量,而不是使用包含例如 8 个引导文件的文件夹,我可以制作 1 个更大的图像,其中所有的 8 张图片并排放置并且根据动画节拍,图像的特定部分会被 blitted。

目前,我使用列表。

right = ["playerdesigns/playerright0.png","playerdesigns/playerright1.png","playerdesigns/playerright2.png","playerdesigns/playerright3.png"]

然后,我的代码将根据动画节拍,获取这些文件并对其进行 blits 处理

但我希望把它做成一个playerright.png图片文件,图片的0-100 Xpixels有playerright1.png,101-200 Xpixels有playerright2.png 等,然后根据需要,我可以从任意点对 100 宽的图像进行 blit。

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    您可以使用subsurface 方法定义直接链接到源表面的子表面:

    subsurface(Rect) -> Surface

    返回一个与其新父级共享其像素的新 Surface。新 Surface 被视为原始 Surface 的子代。对任一 Surface 像素的修改都会相互影响。

    subsurfaceRect 参数指定子图像的矩形区域。它可以是 pygame.Rect 对象或具有 4 个组件的元组(xywidthheight)。

    例如,如果您的图像包含 3 个 100x100 大小的子图像:

    right_surf = pygame.image.load("playerdesigns/playerright.png")
    right_surf_list = [right_surf.subsurface((i*100, 0, 100, 100)) for i in range(3)]
    

    【讨论】:

    • 感谢您的回答,right_surf.subsurface 3rd 和4th 参数图片有多大(宽度和高度)?
    • @Kuiu 是的。我已经为答案添加了解释。
    • 对此进行了一些测试,似乎工作正常,非常感谢
    猜你喜欢
    • 2014-02-16
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 2012-11-26
    相关资源
    最近更新 更多