2010-12-02 3 views
2

データに応じて特定の色表現を表示する必要があります。スケールの一方の端は緑色で他方は赤色である。スケールはその間の色をカバーする必要があります。c#rgbカラースケール

私は実際のプログラミングには満足していますが、rgbの色をどのようにスケーリングするかは不明です。誰かがこのようなことのためのスケールを知っていますか?

ありがとうございました。

答えて

5

以下の方法があなたのために働く必要があります。

Color GetColor(Int32 rangeStart /*Complete Red*/, Int32 rangeEnd /*Complete Green*/, Int32 actualValue) 
    { 
     if (rangeStart >= rangeEnd) return Colors.Black; 

     Int32 max = rangeEnd - rangeStart; // make the scale start from 0 
     Int32 value = actualValue - rangeStart; // adjust the value accordingly 

     Int32 green = (255 * value)/max; // calculate green (the closer the value is to max, the greener it gets) 
     Int32 red = 255 - green; // set red as inverse of green 

     return Color.FromRgb((Byte)red, (Byte)green, (Byte)0); 
    } 
+0

それは完璧です。ありがとう –

4

この意味は?

Color GetColor(int scale) 
{ 
    // scale is between 1 and 255 
    return Color.FromArgb(255, scale, 255 - scale, 0); 
}
2

リニアスケールとは別に、少しの色理論でより明確にメッセージを得ることができます。どのくらいの時間を費やしたいかによって、たとえば多く、他の多くの間

Cynthia Brewer

Adobe Kuler

Stanford lecture on Colour for visualization

- あまりにも処理およびデータ可視化のためのgoogle。

+2

これはどのように質問に答えるのでしょうか?これらは、赤から緑への尺度の実装方法ではなく、代替スキームを提案します。 –

+1

"スケールは中間の色をカバーする必要があります。"その空間を覆う方法がたくさんあります。また、人々がデータを視覚化するのを助ける際に他のものより優れていることもあります。たとえば、温度プロットの場合、リニアスケールがうまくいくかもしれません。しかし、中間付近の値が非常に重要であることを強調したい場合は、その領域に対照的な色が必要な場合があります。あなたが視覚化しているデータと横断したいメッセージは、2つのエンドポイント間で色を変える方法を決定する必要があります。 –

+0

と+1からコーディにはちょっと曖昧な答えがあります。 –