2

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

3 回答 3

1

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

大多数示例使用 WinForms Color 对象,因为它能够提供 HS 和 L 值。网上有很多例子:

https://web.archive.org/web/20141023005253/http://bobpowell.net/RGBHSB.aspx

如何在 Asp.net 中使用 HSL

于 2011-09-26T01:47:03.217 回答
0

可以为画笔分配颜色,这个 SO 问题应该可以帮助您获得颜色,然后在每次为任意数量的画笔创建新画笔时分配它们。

仅供参考:

画笔类

画笔类

于 2011-09-24T18:25:28.167 回答
0

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

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

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

于 2011-09-24T21:55:17.107 回答