使用C#显示温度作为颜色? [英] Display temperature as a color with C#?

查看:663
本文介绍了使用C#显示温度作为颜色?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人知道一个算法,以开尔文/摄氏度获得温度并返回RGB?



像热像仪。



我找到了一些链接:





UPDATE:

  private static Color [] colors = 
{
Color.FromArgb(155,188,255),// 40000
Color.FromArgb(155,188,255),// 39500
Color.FromArgb(155,188,255),// 39000
Color.FromArgb(155,188,255) ,// 38500
Color.FromArgb(156,188,255),// 38000
Color.FromArgb(156,188,255),// 37500
Color.FromArgb 189,255),// 37000
Color.FromArgb(156,189,255),// 36500
Color.FromArgb(156,189,255),// 36000
颜色。 FromArgb(157,189,255),// 35500
Color.FromArgb(157,189,255),// 35000
Color.FromArgb(157,189,255),// 34500
Color.FromArgb(157,189,255),// 34000
Color.FromArgb(157,189,255),// 33500
Color.FromArgb(158,190,255),/ / 33000
Color.FromArgb(158,190,255),// 32500
Color.FromArgb(158,190,255),// 32000
Color.FromArgb(158,190, 255),// 31500
Color.FromArgb(159,190,255),// 31000
Color.FromArgb(159,190,255),// 30500
Color.FromArgb 159,191,255),// 30000
Color.FromArgb(159,191,255),// 29500
Color.FromArgb(160,191,255),// 29000
Color.FromArgb(160,191,255),// 28500
Color.FromArgb(160,191,255),// 28000
Color.FromArgb(161,192,255),// 27500
Color.FromArgb(161,192,255),// 27000
Color.FromArgb(161,192,255),// 26500
Color.FromArgb(162,192,255) ,// 26000
Color.FromArgb(162,193,255),// 25500
Color.FromArgb(163,193,255),// 25000
Color.FromArgb 193,255),// 24500
Color.FromArgb(163,194,255),// 24000
Color.FromArgb(164,194,255),// 23500
颜色。 FromArgb(164,194,255),// 23000
Color.FromArgb(165,195,255),// 22500
Color.FromArgb(166,195,255),// 22000
Color.FromArgb(166,195,255),// 21500
Color.FromArgb(167,196,255),// 21000
Color.FromArgb(168,196,255),/ / 20500
Color.FromArgb(168,197,255),// 20000
Color.FromArgb(169,197,255),// 19500
Color.FromArgb(170,198, 255),// 19000
Color.FromArgb(171,198,255),// 18500
Color.FromArgb(172,199,255),// 18000
Color.FromArgb 173,200,255),// 17500
Color.FromArgb(174,200,255),// 17000
Color.FromArgb(175,201,255),// 16500
Color.FromArgb(176,202,255),// 16000
Color.FromArgb(177,203,255),// 15500
Color.FromArgb(179,204,255),// 15000
Color.FromArgb(180,205,255),// 14500
Color.FromArgb(182,206,255),// 14000
Color.FromArgb(184,207,255) ,// 13500
Color.FromArgb(186,208,255),// 13000
Color.FromArgb(188,210,255),// 12500
Color.FromArgb 211,255),// 12000
Color.FromArgb(193,213,255),// 11500
Color.FromArgb(196,215,255),// 11000
颜色。 FromArgb(200,217,255),// 10500
Color.FromArgb(204,219,255),// 10000
Color.FromArgb(208,222,255),// 9500
Color.FromArgb(214,225,255),// 9000
Color.FromArgb(220,229,255),// 8500
Color.FromArgb(227,233,255),/ / 8000
Color.FromArgb(235,238,255),// 7500
Color.FromArgb(245,243,255),// 7000
Color.FromArgb(255, 253),// 6500
Color.FromArgb(255,243,239),// 6000
Color.FromArgb(255,236,224),// 5500
Color.FromArgb 255,228,206),// 5000
Color.FromArgb(255,219,186),// 4500
Color.FromArgb(255,209,163),// 4000
Color.FromArgb(255,196,137),// 3500
Color.FromArgb(255,180,107),// 3000
Color.FromArgb(255,161,72),// 2500
Color.FromArgb(255,137,18),// 2000
Color.FromArgb(255,109,0),// 1500
Color.FromArgb(255,51,0) ,// 1000
};


Someone knows an algorithm that gets temperatue in Kelvin/Celsius and returns RGB?

Like in thermal cameras.

I found some links :

http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_T.html

http://www.fourmilab.ch/documents/specrend/specrend.c

But i cant figure what XYZ color is ?

I only have temperature in Celsius..

i can convert it to any temperature Temperature Conversion Formulas

UPDATE: Blackbody Color Datafile I have found this.. but those Kelvin degrees are impossible.. i mean red suppose to be hot.. so why 8000k is blue and 1000k is red...

解决方案

The best option is to use an image with GetPixel:

private void UpdateTemp()
{
    Bitmap temps = (Bitmap)Properties.Resources.temp;
    if (curTemp >= 0)
    {
        int i = curTemp;
        if (i < 0)
            i = 0;
        if (i > temps.Width-1)
            i = temps.Width-1;
        this.BackColor = temps.GetPixel(i, 10);
    }
}

Or building an array. Source

    private static Color[] colors = 
    {
        Color.FromArgb(155, 188, 255), //    40000
        Color.FromArgb(155, 188, 255), //    39500
        Color.FromArgb(155, 188, 255), //    39000
        Color.FromArgb(155, 188, 255), //    38500
        Color.FromArgb(156, 188, 255), //    38000
        Color.FromArgb(156, 188, 255), //    37500
        Color.FromArgb(156, 189, 255), //    37000
        Color.FromArgb(156, 189, 255), //    36500
        Color.FromArgb(156, 189, 255), //    36000
        Color.FromArgb(157, 189, 255), //    35500
        Color.FromArgb(157, 189, 255), //    35000
        Color.FromArgb(157, 189, 255), //    34500
        Color.FromArgb(157, 189, 255), //    34000
        Color.FromArgb(157, 189, 255), //    33500
        Color.FromArgb(158, 190, 255), //    33000
        Color.FromArgb(158, 190, 255), //    32500
        Color.FromArgb(158, 190, 255), //    32000
        Color.FromArgb(158, 190, 255), //    31500
        Color.FromArgb(159, 190, 255), //    31000
        Color.FromArgb(159, 190, 255), //    30500
        Color.FromArgb(159, 191, 255), //    30000
        Color.FromArgb(159, 191, 255), //    29500
        Color.FromArgb(160, 191, 255), //    29000
        Color.FromArgb(160, 191, 255), //    28500
        Color.FromArgb(160, 191, 255), //    28000
        Color.FromArgb(161, 192, 255), //    27500
        Color.FromArgb(161, 192, 255), //    27000
        Color.FromArgb(161, 192, 255), //    26500
        Color.FromArgb(162, 192, 255), //    26000
        Color.FromArgb(162, 193, 255), //    25500
        Color.FromArgb(163, 193, 255), //    25000
        Color.FromArgb(163, 193, 255), //    24500
        Color.FromArgb(163, 194, 255), //    24000
        Color.FromArgb(164, 194, 255), //    23500
        Color.FromArgb(164, 194, 255), //    23000
        Color.FromArgb(165, 195, 255), //    22500
        Color.FromArgb(166, 195, 255), //    22000
        Color.FromArgb(166, 195, 255), //    21500
        Color.FromArgb(167, 196, 255), //    21000
        Color.FromArgb(168, 196, 255), //    20500
        Color.FromArgb(168, 197, 255), //    20000
        Color.FromArgb(169, 197, 255), //    19500
        Color.FromArgb(170, 198, 255), //    19000
        Color.FromArgb(171, 198, 255), //    18500
        Color.FromArgb(172, 199, 255), //    18000
        Color.FromArgb(173, 200, 255), //    17500
        Color.FromArgb(174, 200, 255), //    17000
        Color.FromArgb(175, 201, 255), //    16500
        Color.FromArgb(176, 202, 255), //    16000
        Color.FromArgb(177, 203, 255), //    15500
        Color.FromArgb(179, 204, 255), //    15000
        Color.FromArgb(180, 205, 255), //    14500
        Color.FromArgb(182, 206, 255), //    14000
        Color.FromArgb(184, 207, 255), //    13500
        Color.FromArgb(186, 208, 255), //    13000
        Color.FromArgb(188, 210, 255), //    12500
        Color.FromArgb(191, 211, 255), //    12000
        Color.FromArgb(193, 213, 255), //    11500
        Color.FromArgb(196, 215, 255), //    11000
        Color.FromArgb(200, 217, 255), //    10500  
        Color.FromArgb(204, 219, 255), //    10000
        Color.FromArgb(208, 222, 255), //    9500
        Color.FromArgb(214, 225, 255), //    9000
        Color.FromArgb(220, 229, 255), //    8500
        Color.FromArgb(227, 233, 255), //    8000
        Color.FromArgb(235, 238, 255), //    7500
        Color.FromArgb(245, 243, 255), //    7000
        Color.FromArgb(255, 249, 253), //    6500
        Color.FromArgb(255, 243, 239), //    6000
        Color.FromArgb(255, 236, 224), //    5500
        Color.FromArgb(255, 228, 206), //    5000
        Color.FromArgb(255, 219, 186), //    4500
        Color.FromArgb(255, 209, 163), //    4000
        Color.FromArgb(255, 196, 137), //    3500
        Color.FromArgb(255, 180, 107), //    3000
        Color.FromArgb(255, 161,  72), //    2500
        Color.FromArgb(255, 137,  18), //    2000
        Color.FromArgb(255, 109,   0), //    1500 
        Color.FromArgb(255,  51,   0), //    1000
    };

这篇关于使用C#显示温度作为颜色?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆