Pygame:重新调整像素大小

7

使用pygame,我创建了一个20x20像素的窗口并添加了一个2x2像素的矩形。当我运行程序时,窗口大小非常小,几乎看不到矩形。如何增加窗口大小而保持像素数量不变,即增加像素大小?我知道这个类似问题,但那里讨论了一个更为复杂的情况。

import pygame
screen_width, screen_height = 20, 20
x, y = 10, 10
rect_width, rect_height = 2, 2
vel = 2
black = (0, 0, 0)
white = (255, 255, 255)
pygame.init()
win = pygame.display.set_mode((screen_width, screen_height))
run = True
while run:
    pygame.time.delay(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    win.fill(black)
    pygame.draw.rect(win, white, (x, y, rect_width, rect_height))
    pygame.display.update()
pygame.quit()

为什么不直接增加窗口和矩形的大小呢? - Harry Cutts
这是由于我的特殊用例:我想在一个游戏上训练一个神经网络,而输入层的神经元数量有限,即400。 - AKG
1个回答

6

不要直接在屏幕上绘制,而是绘制到另一个Surface上。

然后将该新的Surface缩放到屏幕大小并将其贴到真实的屏幕表面上。

以下是一个示例:

import pygame
screen_width, screen_height = 20, 20

scaling_factor = 6

x, y = 10, 10
rect_width, rect_height = 2, 2
vel = 2
black = (0, 0, 0)
white = (255, 255, 255)
pygame.init()
win = pygame.display.set_mode((screen_width*scaling_factor, screen_height*scaling_factor))

screen = pygame.Surface((screen_width, screen_height))

run = True
while run:
    pygame.time.delay(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    screen.fill(black)
    pygame.draw.rect(screen, white, (x, y, rect_width, rect_height))

    win.blit(pygame.transform.scale(screen, win.get_rect().size), (0, 0))
    pygame.display.update()
pygame.quit()

非常好用 - 非常感谢您的超快速回答! - AKG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接