我用PyGame的图形库在LED显示屏上显示图形。你知道吗
我的LED显示屏是25x7。对于没有硬件的测试,我可以使用PyGame的display
来查看40x放大版:
screen = pygame.display.set_mode((1000,280))
我想在25x7网格上绘制长方体、矩形等,然后将其投影到我电脑上一个更大的1000x280窗口上,这个窗口看起来像一个40x40像素的25x7网格。这样,如果我开始使用硬件,我就可以跳过大的投影,只需将25x7=175像素的数据写入我的LED。你知道吗
我想出了一个解决方案,但速度太慢了:
xDim = 25
yDim = 7
pixelMultiplier = 40
surf = pygame.Surface((xDim,yDim))
bigSurf = pygame.Surface((pixelMultiplier*xDim,pixelMultiplier*yDim))
# ... manipulate surf ...
# map surf to bigSurf
for x in range(xDim):
for y in range(yDim):
# grab color of pixel
tmpColor = surf.get_at((x,y))
# write to all pixels in larger surface
for i in range(pixelMultiplier):
for j in range(pixelMultiplier):
bigSurf.set_at((pixelMultiplier*x+i,pixelMultiplier*y+j),tmpColor)
是否有一些内置的PyGame函数可以有效地实现这一点?你知道吗
写了这篇文章之后,我突然意识到:
创建一个表示像素的曲面,然后将它转换为更大的曲面。不要对所有175个像素运行1600
set_at()
函数,而要使用已经实现了这一点的内置函数。你知道吗它运行得更快,但我仍然不确定它是否是最佳解决方案。你知道吗
编辑-最佳方法
PyGame确实有内置功能!你知道吗
相关问题 更多 >
编程相关推荐