需要帮助随机选择Bing Maps WPF Control区域的颜色

时间:2016-08-26 15:58:26

标签: c# wpf colors bing-maps

我正在使用C#中的Bing Maps WPF Control来绘制美国各地销售人员所涵盖的一些地区。我能够很好地绘制区域,并使用function similar to this oneSystem.Drawing.KnownColor中随机选择一种颜色,这一切都正常。

我遇到的这个问题是因为它是随机的,你会得到很多颜色,这些颜色在相互接触的区域非常接近(即区域1边界2,区域1是紫色,区域2是每个 - 如此浅紫色,所以最终会一起流血。)

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

1 个答案:

答案 0 :(得分:0)

对于您所在地区的大小/数量,您只能使用四种颜色进行此操作,并将其称为The Four Colors Theorem。如果您对它有深刻的理解,它很容易实现。但您可以在线找到提供的代码,例如: Graph Colouring With Simple Backtracking。与其他任何在线代码一样,需要进行一些调整才能解决您的问题。

另外,您想了解Graph Coloring背后的理论。

我也可以想到这些:

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

  • 对其进行编程以查找“/ any”两个连接的边界,它们之间的颜色渐变较小,然后再次调用GenerateRandomColor()以选择新颜色。让算法继续这样做,直到达到所有要求(所有颜色都不同=所有颜色'delta'都高于阈值)

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

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

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