У меня есть двумерный массив, содержащий данные о температуре из численно решенной задачи теплопередачи в C #. Для визуализации распределения температуры я использовал «Растровое изображение»;Где самая низкая температура показана синим цветом, а самая горячая - красным! Проблема в том, что для создания растрового изображения для размера изображения 300x300 требуется слишком много времени! Хотя я пытаюсь работать с большими, что делает это невозможным! Есть ли более эффективный способ заставить его работать? Любая помощь будет принята с благодарностью. Вот немного моего кода и сгенерированного растрового изображения: введите описание изображения здесь
//RGB Struct
struct RGB
{
public Int32 num;
public int red;
public int green;
public int blue;
public RGB(Int32 num)
{
int[] color = new int[3];
int i = 2;
while (num > 0)
{
color[i] = num % 256;
num = num - color[i];
num = num / 256;
i--;
}
this.red = color[0];
this.green = color[1];
this.blue = color[2];
this.num = (256 * 256) * color[0] + 256 * color[1] + color[2];
}
}
//Create Color Array
Int32 red = 16711680;
Int32 blue = 255;
Int32[,] decimalColor = new Int32[Nx, Ny];
for (int i = 0; i < Nx; i++)
{
for (int j = 0; j < Ny; j++)
{
double alpha = (T_new[i, j] - T_min) / (T_max - T_min);
double C = alpha * (red - blue);
decimalColor[i, j] = Convert.ToInt32(C) + blue;
}
}
//Bitmap Result
Bitmap bmp = new Bitmap(Nx, Ny);
for (int i = 0; i < Nx; i++)
{
for (int j = 0; j < Ny; j++)
{
RGB rgb = new RGB(decimalColor[i, j]);
bmp.SetPixel(i,j,Color.FromArgb(rgb.red,rgb.green,rgb.blue));
}
}
pictureBox1.Image = bmp;