8

HTML テーブルで構成されるヒート マップに取り組んでいます。このテーブルにはn 個のセルが含まれ、最低値と最高値があります (最高値は常に最低値よりも高くなります)。各セルにはセル値があります。これらの値はすべて int です。

最小値のセルは水色で、最大値のセルが濃い赤になるようにスケーリングされます。理想的な範囲については、以下の勾配を参照してください。

ここに画像の説明を入力

個々のセルの 16 進数の色の値を計算するために、テーブルの最小値と最大値、およびセルの合計値を調べて、RGB 16 進数を返すメソッドにそれらを渡し、HTML の背景色スタイルで使用できるようにします。

これまでの方法は次のとおりです。

public string ConvertTotalToRgb(int low, int high, int cell)
{
    int range = high - low;

    int main = 255 * cell/ range;
    string hexR = main.ToString("X2");
    int flip = 255 * (1 - (cell/ range));
    string hexB = flip.ToString("X2");

    return hexR + "00" + hexB;
}

最小値が 0 で最大が 235 の場合、このメソッドは次の表を返します (セル値はセル内にあります)。

ここに画像の説明を入力

例:最小値が 20、最大値が 400、セルが 60 の場合、グラデーションに沿って約 15.8% の色の RGB 16 進数を返すメソッドが必要です。

400 - 20 = 380
380 / 60 = 6.33
100 / 6.33 = 15.8

この式が正確でないことは承知していますが、それが部分的に私がここで助けを求めている理由です.

私はここまでやってきましたが、どうすればよいのか本当にわかりません。どんな助けでも大歓迎です!

4

2 に答える 2

4

色相 (H 値) は周期的であるため、本当に必要なのは HSV カラーです。色相が 0 から 1 の間の場合は、色のグラデーションに沿ってどれくらいの距離にしたいかを示します。この場合、彩度と値のコンポーネントは常に 1 です。

ここで HSV から RGB への変換コードに従ってください: HSV から RGB への停止は黄色の C# で停止します。

public string ConvertTotalToRgb(int low, int high, int cell)
{
    int range = high - low;
    float h= cell/ (float)range;
    rgb = HSVtoRGB(h,1.0f,1.0f);
    return "#" + rgb.R.ToString("X2") + rgb.G.ToString("X2") + rgb.B.ToString("X2");
}

それをサポートするブラウザー (CSS3) をターゲットにできることがわかっている場合は、hsv 値を直接レンダリングするだけです。

于 2013-07-24T00:12:57.503 に答える