我想在PyGame中找到一种方法来画一条由黑色像素组成的线。按照Pygame: Draw single pixel,我最终得到:
使用以下代码:
import pygame
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
FPS = 10
pygame.init()
screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
screen = pygame.display.set_mode((200, 200))
screen.fill(WHITE)
pygame.display.flip()
clock = pygame.time.Clock()
screen_width, screen_height = screen.get_size()
for i in range(100):
screen.set_at((i, 100), BLACK)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
pygame.display.update()
clock.tick(FPS)
我使用ColorSlurp检查宽度。
为什么我最后得到一条4px宽的线?有没有办法修正它,使它实际上得到一条1像素宽的线?
备注
我想也许ColorSlurp在缩放时添加了虚假的额外像素(比如“过度缩放”)。所以我用HTML画布检查了一下,我得到了这个:
通过缩小,我得到了一条1像素宽的线。所以我有同样的行为,但我的电脑实际上可以显示一条比PyGame上的.set_at(position, color)
或canvas上的.fillRect(x, y, 1, 1)
更细的线。
1条答案
按热度按时间bkhjykvo1#
set_at
改变单个像素的颜色。但是,如果您的显示是DPI缩放的,当Pygame窗口更新时,表面会被放大。您必须禁用Pygame窗口的缩放。例如,在窗口中您可以: