首页 文章

pygame表面没有显示出来

提问于
浏览
0

我一直在用pygame做一些测试但是我遇到了表面 . 我无法画上表面或其他东西 . 这是我的代码:

import pygame

pygame.init()
screen = pygame.display.set_mode((400, 300))
#surface = pygame.Surface((100, 100))
done = False
screen.fill((255, 255, 255))


while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True


    #surface = pygame.Surface((50, 50))
    surface = pygame.Surface((100, 100))
    #surface.fill((255, 0, 0))
    #surface.set_colorkey((255, 0, 0))
    pygame.draw.circle(surface, (0,0,0), (25,25),25) 
    #pygame.draw.rect(screen, (0, 128, 255), pygame.Rect(30, 30, 60, 60))

    pygame.display.flip()

因此,当我想在屏幕上绘制内容时,它会绘制它:

这有效:

pygame.draw.circle(screen, (0,0,0), (25,25),25)

但这不是:

pygame.draw.circle(surface, (0,0,0), (25,25),25)

我已经阅读了一些文档,但似乎足以调用表面并将背景设置为白色,因为它默认情况下将其绘制为黑色 . 我真的不知道我做错了什么 .

我希望有足够的信息 .

干杯 .

1 回答

  • 0

    Pygame有不同类型的表面 . 除了普通表面,还有显示器 . 显示器是一种表面,但表面不是一种显示器 . 它们之间的区别在于显示屏显示在屏幕上,而普通表面则不显示 .

    Pygame曲面使用 pygame.Surface 创建,而显示使用 pygame.display.set_mode 创建 . 在Pygame中,你一次只能有一个显示器,但你可以拥有任何你想要的表面 .

    假设 screen 是您的显示器, surface 是您的另一个表面,以下是在屏幕上显示曲面的方法:

    screen.blit(surface, [x,y])
    

    xy 是它们在显示屏上显示的坐标 .

    在您的程序中,您永远不会将表面blit到显示器上,因此它永远不会显示 . 只需这样做,除非您的代码还存在其他问题,否则该程序将起作用 .

    如果这不能解决您的问题,请在评论中通知我,我会看到我可以做些什么来帮助您 .

    请参阅https://www.pygame.org/docs/ref/display.htmlhttps://www.pygame.org/docs/ref/surface.html .

相关问题