【发布时间】:2013-07-23 05:02:11
【问题描述】:
我正在制作由 HTML 表格组成的热图。此表包含 n 个单元格,并具有 最低 值和 最高 值(最高总是高于最低)。每个单元格都有一个 cell 值。所有这些值都是整数。
具有最低值的单元格应为浅蓝色,缩放到具有最高值的单元格为深红色的点。请参阅下面的渐变以获得理想范围:
要计算每个单独单元格的十六进制颜色值,我会查看表格中的 最低 和 最高 值以及单元格的 total值,将它们传递给返回 RGB 十六进制的方法,准备好与 HTML 的 background-color 样式一起使用。
目前的方法如下:
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,此方法返回下表(单元格值在单元格中)。
示例:如果 lowest 为 20,highest 为 400,cell 为 60,我希望方法返回 RGB 十六进制颜色大约是渐变的 15.8%。
400 - 20 = 380
380 / 60 = 6.33
100 / 6.33 = 15.8
我知道这个公式不太准确,但这也是我在这里寻求帮助的部分原因。
我已经做到了这一点,但我真的不知道如何继续。非常感谢任何帮助!
【问题讨论】:
-
你的问题真令人困惑.. HTML表格是什么样的?
-
我确实在问题的底部放了一张桌子的图片:/
-
那我误会了..值从何而来?
-
值的来源应该与这个问题无关;我有目的地将范围缩小到一种方法。这种单一方法接受最低可能值(将呈现为渐变中最左侧的颜色)、最高可能值(将呈现为渐变中最右侧的颜色)以及将呈现为某处颜色的单元格值在渐变中取决于值。
-
例如,如果最低为 20,最高为 400,单元格为 60,我希望该方法返回颜色的 RGB 十六进制值,沿着渐变的 15% 左右。