如何在运行时生成12种不同的画笔颜色(12是可能变化的数字)

时间:2011-09-24 18:17:32

标签: wpf code-behind brush

我想在后面的代码中在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;
    }

3 个答案:

答案 0 :(得分:1)

您可能需要的是RGB到HSL和HSL到RGB转换器。然后,您可以将总色调(通常表示为圆圈中的度数,有时是百分比值)除以所需颜色的数量。按段数增加色调值应该可以产生最有区别的颜色。

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

http://www.bobpowell.net/RGBHSB.htm

how to use HSL in Asp.net

答案 1 :(得分:0)

可以为画笔指定颜色,This SO question可以帮助您获取颜色,然后在每次为任意数量的画笔创建新画笔时分配它们。

仅供参考:

Brush Class

Brushes class

答案 2 :(得分:0)

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

如果您有很多颜色,这可能会遇到麻烦,因此您越来越有可能碰到现有颜色,但对于12种(或左右)颜色应该没问题。

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