将int值转换为渐变颜色 - c#

我有一个int值,范围从-148到10,并且我试图将此值映射到以下渐变中的颜色:

黑色(-148)
蓝色
青色
绿色
黄色
橙子

白(10)

在视觉上,我的颜色渐变如下所示:

我的第一个想法是将范围(-148至10)分解为与这八种颜色相对应的较小组,但是显然导致多个值转换为同一颜色。我想在此渐变中使用更多或什至所有颜色,但是我不确定该怎么做。谁能提供一些建议?对于它的价值,我正在C#/。NET中工作,因此需要将int转换为RGB值。

参考方案

您的意思是这样的映射功能吗?
(在颜色列表中的“透明”条目在值为10的情况下是虚拟的,其中,颜色1从列表的第9个条目中选取)

    Color[] colors = new Color[] { Colors.Black, Colors.Blue, Colors.Cyan, Colors.Green, Colors.Yellow, Colors.Orange, Colors.Red, Colors.White, Colors.Transparent };
    public Color IntToColor(int i)
    {
        float scaled = (float)(i + 148) / 158 * 7;
        Color color0 = colors[(int)scaled];
        Color color1 = colors[(int)scaled + 1];
        float fraction = scaled - (int)scaled;
        Color result = new Color();
        result.R = (byte)((1 - fraction) * (float)color0.R + fraction * (float)color1.R);
        result.G = (byte)((1 - fraction) * (float)color0.G + fraction * (float)color1.G);
        result.B = (byte)((1 - fraction) * (float)color0.B + fraction * (float)color1.B);
        result.A = 255;
        return result;
    }

附注:为简单起见,没有检查[-148:10]范围
P.P.S .:我知道我的守则不会赢得任何选美比赛。

LeetCode题解75.sort-colors

题目地址 https://leetcode.com/problems/sort-colors/description/ 题目描述 Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are …

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解统计城市的所有灯泡

这个是我刚毕业的时候,一个真实的面试题,这是一个开放题。题目描述:想办法,将一个城市的所有灯泡数量统计出来。题解:费米估算法1、如果某个城市常驻人口有1000万2、假设每5人居住在一套房里,每套房有灯泡5只,那么住宅灯泡共有1000万只3、假设公众场所每10人共享一只灯泡,那么共有100万只4、主要的这两者相加就得出了1100万只当然实际上这是估算的,具体应…

LeetCode题解黑白圆盘

一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。圆盘以一个未知的速度、按一个未知的方向旋转。你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。你需要多少个相机才能确定圆盘旋转的方向?题解:可以用一个相机即可

LeetCode题解圆上任取三点构成锐角三角形的概率

来自字节跳动的一道几何题题解:1/4