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 へのコンバーターです。次に、合計の色相 (通常は円で囲まれた度数で表されますが、パーセント値で表されることもあります) を必要な色の数で割ることができます。色相値をセグメント量だけ増加させると、可能な限り最も差別化された色が生成されます。

ほとんどの例では、HS 値と L 値を提供できるため、WinForms Color オブジェクトを使用しています。多くのオンラインの例があります:

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 色 (またはそれ以上) の場合は問題ありません。

または、何百もの色のリストを作成し、ランダムに選択されたときにリストから各色を削除します。これにより、衝突が発生しないようになりますが、さらに色が必要な場合はリストを拡張する必要があります.

于 2011-09-24T21:55:17.107 に答える