我试图使用Python(2.7.9)中的生成器绘制函数和图形,但发现了一个问题:我无法将生成的像素数据(RGB元组)刷新到Pygame像素数组中。这是我的代码(我试着运行它):
使用二维阵列
pixArr = pygame.PixelArray(surface)
pixArr=[[(0,0,function(x,y)) for x in range(1,screenX)] for y in range(1,screeny)]
del pixArr
在这里我意识到pixArr不是一个普通的2d列表,因为我无法输出它(print pixArr)
然后我试着用射程
pixArr[0:screenX*screenY] = [(0,0,function(curPix%screenX, curPix//screenY)) for curPix in range(0,screenX*screenY)]
我在pygame网站HERE上发现了类似这样的代码,但它给了我错误“ValueError:sequence size mismatch”,在玩了一下之后发现它只适用于单一颜色(例如,pixArr[0:screenX*screenY]=(0,0,255)
将整个屏幕涂成蓝色)
DR:如何在不使用循环的情况下设置每个像素
For y in range(0,1000):
For x in range(0,1000):
gfx.draw(surface,x,y,(0,0,function(a,b))) #or pixArr in this line
我使用的是PyGame1.9.1,但在1.9.2上,
PixelArrays
变化很大,所以要小心。在我刚试过这个例子,效果很好:
需要注意的一点是:
^{pr2}$无法工作,因为它将PixelArray变量转换为列表(如第一段代码中所示)。在
关于你为什么得到}不等于{}。
我建议你在继续之前检查一下。在
ValueError
,我只是做了一些检查,奇怪的是,我发现{在
编辑:
我想分享我得到的这个新片段,因为它看起来很有趣:
相关问题 更多 >
编程相关推荐