Перевод температуры в RGB - C#
Формулировка задачи:
Поскольку прога пишется на C# то решил написать в этом разделе.
Задание такое: Есть целочисленная матрица со значениями от -500 до + 500 (к примеру).
Необходимо в зависимости от значения числа закрасить ячейку таблицы нужным цветом.
То есть например -500, поскольку эта самая холодная температура в матрице, то ячейка должна быть закрашена тёмно-синим цветом, а при +500 тёмно-красным цветом.
Необходим алгоритм для перевода темепературы, заданной в числах, в в цвет RGB, безусловно если такой существует. Или придётся самому алгоритм выдумывать???
Решение задачи: «Перевод температуры в RGB»
textual
Листинг программы
public static Color ColorFromAhsb(int a, float h, float s, float b) { if (0 > a || 255 < a) { throw new ArgumentOutOfRangeException("a", a, Properties.Resources.InvalidAlpha); } if (0f > h || 360f < h) { throw new ArgumentOutOfRangeException("h", h, Properties.Resources.InvalidHue); } if (0f > s || 1f < s) { throw new ArgumentOutOfRangeException("s", s, Properties.Resources.InvalidSaturation); } if (0f > b || 1f < b) { throw new ArgumentOutOfRangeException("b", b, Properties.Resources.InvalidBrightness); } if (0 == s) { return Color.FromArgb(a, Convert.ToInt32(b * 255), Convert.ToInt32(b * 255), Convert.ToInt32(b * 255)); } float fMax, fMid, fMin; int iSextant, iMax, iMid, iMin; if (0.5 < b) { fMax = b - (b * s) + s; fMin = b + (b * s) - s; } else { fMax = b + (b * s); fMin = b - (b * s); } iSextant = (int)Math.Floor(h / 60f); if (300f <= h) { h -= 360f; } h /= 60f; h -= 2f * (float)Math.Floor(((iSextant + 1f) % 6f) / 2f); if (0 == iSextant % 2) { fMid = h * (fMax - fMin) + fMin; } else { fMid = fMin - h * (fMax - fMin); } iMax = Convert.ToInt32(fMax * 255); iMid = Convert.ToInt32(fMid * 255); iMin = Convert.ToInt32(fMin * 255); switch (iSextant) { case 1: return Color.FromArgb(a, iMid, iMax, iMin); case 2: return Color.FromArgb(a, iMin, iMax, iMid); case 3: return Color.FromArgb(a, iMin, iMid, iMax); case 4: return Color.FromArgb(a, iMid, iMin, iMax); case 5: return Color.FromArgb(a, iMax, iMin, iMid); default: return Color.FromArgb(a, iMax, iMid, iMin); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д