iOS 中的油漆桶

Paint Bucket in iOS

我遇到了一个问题,需要一些帮助或指导以获得可能的解决方案。

基本上在我的应用程序中会有一个包含多个区域的地图。 用户可以select这些区域中的任何一个,届时这个区域会被填充颜色。

想象一张像这样的地图,所以我需要能够只改变一个国家的颜色。

类似于画册 (https://itunes.apple.com/pt/app/colorfly-best-coloring-book/id1020187921?mt=8) 或 Photoshop 中的 Paint Bucket 命令。

知道如何在 iOS 上获得这样的东西吗?

提前致谢

您要查找的油漆桶技术是一组通常称为“flood fill”的图形算法。根据环境和性能需求,有不同的实施方法。 (那个维基百科上还有更多内容 link。)

我没有这方面的经验,但是这里有一个来自 GitHub 的库,它声称在给定一个 UIImage 对象的情况下为 iOS 实现这个:https://github.com/Chintan-Dave/UIImageScanlineFloodfill

回复:关于在没有用户接触的情况下执行此操作的问题:是的,您需要将国家/地区地图保留到 (x,y) 点,以便您可以在需要时重新淹没国家/地区。也就是说,县边界的错综复杂可能会使算法填充不准确,而无需对原始来源进行更仔细的规范化。如果你的整体地图只包含一小组可能的状态,还有其他方法可以实现这个目标,比如保留一组完整的可能图像(在 ie Photoshop 中创建)并将它们切换出去,或者保留一组每个国家 "overlay" 您根据需要交换的图像。 (但是,如果该源图像的洪水填充是准确的,并且性能满足您的需求,那就太好了。)