Wpf 如何在运行时生成12种不同的笔刷颜色(12是一个可能不同的数字)

Wpf 如何在运行时生成12种不同的笔刷颜色(12是一个可能不同的数字),wpf,code-behind,brush,Wpf,Code Behind,Brush,在我的代码隐藏中,我想在WPF中生成12种不同的可见笔刷颜色,最初为12种颜色的数量可能会随着应用程序的发展而变化,也就是说,我想根据给定的计数生成尽可能多的可见笔刷颜色 我想再解释一下: 我在for循环中创建矩形,对于在运行时创建的每个矩形,我必须指定填充颜色,例如 for (i=0; i<12; i++) { Rectangle rect = new Rectangle(); rect.Fill = <I want to assig

在我的代码隐藏中,我想在WPF中生成12种不同的可见笔刷颜色,最初为12种颜色的数量可能会随着应用程序的发展而变化,也就是说,我想根据给定的计数生成尽可能多的可见笔刷颜色

我想再解释一下:

我在for循环中创建矩形,对于在运行时创建的每个矩形,我必须指定填充颜色,例如

    for (i=0; i<12; i++)
    {
        Rectangle rect = new Rectangle();
        rect.Fill = <I want to assign a unique visible color>;
        rect.Stroke = Brushes.Black;
        rect.StrokeThickness = 1;
    }

for(i=0;i可以为画笔指定颜色,这有助于您获取颜色,然后在每次为任意数量的画笔创建新画笔时指定它们

仅供参考:


使用随机数生成器为颜色创建RGB三元组。将其保存在列表中。下次循环时,根据列表检查新生成的颜色。如果不在列表中,请使用它,如果再次选择

如果你有很多颜色,那么这可能会遇到麻烦,因此你越来越有可能选择现有的颜色,但对于12种(或更多)颜色,这应该是可以的


或者,创建一个包含100种颜色的列表,并在随机选取时从列表中删除每种颜色。这将确保不会出现任何冲突,但如果需要更多颜色,则需要扩展该列表。

您可能需要的是RGB到HSL和HSL到RGB转换器。然后,您可以分割总色调(通常用圆圈中的度数表示,但有时用百分数表示)所需的颜色数。通过分段量增加色调值应产生尽可能多的差异化颜色

大多数示例使用WinForms Color对象,因为它能够提供H S和L值。有很多在线示例:


谢谢SpeedBirdNine..我添加了一个for循环示例来更清楚地解释我的问题..!!我认为这种方法的一个问题是,两种颜色的RGB值可能略有不同,但对人类来说仍然完全相同。ChrisF,我认为另一种方法更好,不是只加载100种颜色,而是加载所有的av使用反射或类似的方法对每种颜色指定一个唯一的索引,然后在访问时,我们可以给出索引并获得颜色。这是一个好的解决方案吗?@svick-同意。我认为您需要使用一些“相邻”颜色算法。@Vijay-出于svick提到的原因,我不会选择所有颜色。