【发布时间】:2023-04-02 08:00:02
【问题描述】:
我想知道一种填充 Pygame 表面的好方法。 我想要的最好的例子是油漆桶在 MS Paint 中的工作方式。
例如,如果在白色表面上画了一个黑色圆圈,我想在圆圈内填充白色(或任何形状)。
为了让您了解我在做什么,我正在制作一个像素艺术工具,并且我正在开发一个类似于 MS Paint 中的桶的功能。 (观看:http://imgur.com/a/ogtPV)
我尝试使用Surface.get_at() 和Surface.set_at() 来填充一堆,但是一旦你获得大约 100x100 像素的区域来填充,它就会滞后太多。
我也愿意接受任何其他不滞后的方法。
【问题讨论】:
-
@SimeonAleksov 不,这只会使整个表面成为我选择的任何颜色。如果您不明白我在做什么,请进入 MS Paint 并弄乱油漆桶。
-
我想位图编辑器中的那个工具叫做“flood fill”,如果你搜索算法可能会很有用。
-
附带说明,如果您对像素艺术工具很认真,我建议您将 Numpy + OpenCV 用于所有逻辑,并将 Pygame 仅用作前端(最终数组表示和鼠标/键盘输入)
-
@MikhailV Pygame 可以正常工作。 :P