我试图制作一个将显示mandelbrot集的python程序,并且尝试逐像素渲染它,但它仅显示黑色。
我正在运行python 3.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是在我的代码中较早定义的
我希望得到mandlebrot集的图像,但是我只有一个黑色的pygame窗口。
答案 0 :(得分:0)
您需要在矩形上指定线宽。它默认为0,所以我认为pygame不会绘制没有轮廓的单像素填充矩形。
在末尾添加宽度1可以绘制像素:
pygame.draw.rect(screen, (255,255,255),(j, i, 1, 1), 1)
答案 1 :(得分:0)
您应该将绘图函数和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()