当我一个像素接一个像素的时候,Pygame什么都没画

2024-04-20 15:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个python程序来显示mandelbrot集,并尝试逐像素渲染它,但它只显示黑色。你知道吗

我运行的是python3.7,我使用的是pygame版本1.9.4。唯一不起作用的是渲染。你知道吗

import pygame
pygame.init()
screen = pygame.display.set_mode((1000,1000))
carryOn=True
pressed=False
for i in range(len(mandelbrot)):
    for j in range(len(mandelbrot[i])):
        if j:
            pygame.draw.rect(screen, (0,0,0), (j, i, 1,1))
        else:
            pygame.draw.rect(screen, (255,255,255),(j, i, 1,1))
pygame.display.flip()
while carryOn:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            carryOn=False

    pygame.time.Clock().tick(40)
pygame.quit()

mandelbrot是在我的代码前面定义的

我本想拍一张曼陀罗的照片,但结果我只得到了一个黑色的pygame窗口。你知道吗


Tags: inrecteventfalseforlenifdisplay
2条回答

您需要在矩形上指定线宽。它默认为0,所以我认为pygame不会绘制一个没有轮廓的像素填充矩形。你知道吗

在末尾添加宽度1将使像素绘制:

pygame.draw.rect(screen, (255,255,255),(j, i, 1, 1), 1)

您应该将绘图函数和flip()放入while循环中, 如果你在屏幕上画画。你知道吗

#I assume this is your main loop?
while carryOn:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            carryOn=False

    # clear the screen with black
    screen.fill((0,0,0)

    # assume mandelbrot is a 2D-Array
    for i in range(len(mandelbrot)):
        for j in range(len(mandelbrot[i])):
            if j:
                pygame.draw.rect(screen, (0,0,0), (j, i, 1,1))
            else:
                pygame.draw.rect(screen, (255,255,255),(j, i, 1,1))

    # display.flip should be in the while loop
    pygame.display.flip()
    pygame.time.Clock().tick(40)

pygame.quit()

相关问题 更多 >