需要帮助随机选择 Bing 个地图 WPF 控制区域的颜色

Need help randomly pick colors for Bing Maps WPF Control regions

我正在使用 Bing Maps WPF Control in C# to draw some regions over the US that various salespeople cover. I'm able to draw the regions just fine and I use a function similar to this oneSystem.Drawing.KnownColor 中随机选择一种颜色,一切正常。

我 运行 关注的这个问题是因为它是随机的,你会得到很多在彼此接触的区域上非常接近的颜色(即区域 1 与 2 接壤,区域 1 是紫色和区域2 是稍微深一点的紫色,所以它们最终会一起流血。

是否可以对彼此接触的区域进行一些 RGB 数学计算以确保颜色值明显不同?另外,有没有办法完全排除某些阴影(例如:地图的背景是白色,所以所有白色阴影都应该是不可拾取的)?

无论区域的大小/数量如何,您都可以只使用四种颜色来做到这一点,它被称为 The Four Colors Theorem。如果你对它有深刻的理解,它很容易实现。但是您可以找到已经在线提供的代码,例如: Graph Colouring With Simple Backtracking。与任何其他在线代码一样,需要进行一些调整才能解决您的问题。

另外,你想看看Graph Coloring背后的理论。

我也能想到这些:

  • 当发生冲突时,您(最终用户)为什么不手动选择另一种颜色?

  • 对其编程以找到 "the / any" 两个连接的边框,它们之间的颜色增量很小,然后再次调用 GenerateRandomColor() 以选择新颜色。让算法一直这样做直到达到所有要求(所有颜色都不同=所有颜色的delta'都在阈值之上)

  • 在选择的每种颜色上,确保不再选择该颜色周围的 [+x, -x] 范围内的某些范围,包括该颜色。

提示:将你的颜色视为数字(类似于彩虹 -> 0 到 1000),然后 创建 使用该 int / hex .. 等的颜色)。

就我个人而言,我只想摆脱这整个随机性的事情,因为问题并不那么复杂,这不是一个好的设计,因为它不值得。我只准备一个小文本文件,其中包含 30 种不同颜色的 RGB 值。在应用程序负载上加载它,并使用它为每个员工分配不同的颜色。一旦他们超过 30 个,我将修改并向该文本文件添加更多颜色。