Pygame:重新缩放像素大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pygame:重新缩放像素大小相关的知识,希望对你有一定的参考价值。

使用pygame,我创建了一个20x20像素的窗口并添加了一个2x2像素的矩形。当我运行程序时,窗口大小非常小,我几乎看不到矩形。如何在保持像素数不变的情况下增加窗口大小,即增加像素大小?我知道this similar question,但有一个更复杂的案例被讨论。

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()
答案

不要直接画到屏幕上,而是画到另一个Surface

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

这是一个例子:

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()

以上是关于Pygame:重新缩放像素大小的主要内容,如果未能解决你的问题,请参考以下文章

如何强制画布大小以像素为单位的窗口的实际大小,而不考虑浏览器的缩放因子?

css 快速片段将svg与中心对齐并缩放到视口大小。

surface.fill 不适用于 pygame 中的 pygame.Surface 变量

蹲在python平台游戏中与pygame

Qt3D:如何将 Scene2D 缩放为与窗口相同的大小(逐像素)?

如何使用 af_imageAspectScaled 缩放到所需的像素大小