Я имею дело с имитатором дозвукового сопла, и у меня проблемы, потому что я хочу рисовать разные части сопла в зависимости от значения, полученного в функции.Я не имею никакой идеи реализовать ColorMap, поэтому я сделал функцию, которая возвращает 10 цветов для диапазона значений.
Ниже приведен код, который я использовал, но я хочу изменить этот код на код ColorMap.
ЭТО ФУНКЦИЯ, КОТОРАЯ ВОЗВРАЩАЕТ ЦВЕТ
открытая строка ColorCeldaMach (doubleMach) {
if (Mach > 1.05)
color = "Black";
if (Mach <= 1.05 && Mach > 1.00875)
color = "Firebrick";
if (Mach <= 1.00875 && Mach > 0.9675)
color = "Red";
if (Mach <= 0.9675 && Mach > 0.92625)
color = "Orange";
if (Mach <= 0.92625 && Mach > 0.885)
color = "Yellow";
if (Mach <= 0.885 && Mach > 0.84375)
color = "Green";
if (Mach <= 0.84375 && Mach > 0.8025)
color = "Cyan";
if (Mach <= 0.8025 && Mach > 0.76125)
color = "Blue";
if (Mach <= 0.76125 && Mach > 0.72)
color = "Purple";
if (Mach <= 0.72 && Mach > 0)
color = "Indigo";
return this.color;
}
И ЭТО КОД В ГЛАВНОМ ОКНЕ:
for (int j = 0; j < columns; j++)
{
System.Windows.Controls.Label lbl = new System.Windows.Controls.Label();
lbl.Height = Areas[j] * 30;
lbl.Width = rejilla.Width / columns;
// Este tag nos permitira identificar la celda cuando cliquemos en ella
lbl.Tag = new Point(1, j); //Para poder identificarlo posteriormente
// Definimos las caracteristicas del borde de la celda
lbl.BorderBrush = new SolidColorBrush(Colors.Gray);
lbl.BorderThickness = new Thickness(1);
lbl.Background = (Brush)new BrushConverter().ConvertFromString(nozzleQ1D.ColorCeldaDensidad(Density[j]));
// Añadimos la etiqueta a la fila
stkPanel.Children.Add(lbl);
}
// Añadimos la fila a la rejilla
rejilla.Children.Add(stkPanel);