【问题标题】:Paint Bucket in iOS [closed]iOS中的油漆桶[关闭]
【发布时间】:2016-01-13 04:18:32
【问题描述】:

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

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

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

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

知道如何在 iOS 上获得类似的东西吗?

提前致谢

【问题讨论】:

  • 您正在寻找一种名为“Flood fill”的算法,即en.wikipedia.org/wiki/Flood_fill
  • 感谢您的回答。请添加问题的答案,以便我接受。
  • @BenZotto 想象一下我需要在没有用户触摸的情况下自动更改一个国家/地区的颜色。唯一的解决方案是存储该点的坐标并自动填充该国家,或者还有其他更简单的解决方案?谢谢

标签: ios iphone ios7


【解决方案1】:

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

我没有这方面的经验,但这里有一个来自 GitHub 的库,旨在为给定 UIImage 对象的 iOS 实现此功能:https://github.com/Chintan-Dave/UIImageScanlineFloodfill

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 2016-05-06
    相关资源
    最近更新 更多