Перевод части кода C++ Builder в C# - работа с изображением
Формулировка задачи:
Подскажите, пожалуйста, как эти 3 строчки написанные в Builder записать в C#. Особенно не понятен Canvas.
// Непосредственно в следующей строке происходит считывание значения яркости
//canvas (холст) - стандартная функция Builder'а для работы с изображениями. Canvas — это поверхность формы или компонента image, на которой соответствующие методы могут вычерчивать графические примитивы.
//Pixels[x][y] - представляющее собой двумерный массив, элементы которого содержат информацию о цвете точек холста.
А массив PixIn это:
crColor=(COLORREF)ImageSource->Canvas->Pixels[x][y];
R=GetRValue(crColor); // Значения яркости текущего пикселя заносим в R,
PixIn[x][y]=R; // Заносим значения яркости текущего пикселя в массив PixIn по соответствующему адресу.
Ну это записано в циклах
for (int x=0;x<=maxH-1;x++) // По столбцам от 0 до максимальной высоты
for (int y=0;y<=maxW-1;y++) // По строкам от 0 до максимальной ширины
{
...
}
В C# это:
for (int i = 0; i <= maxH - 1; i++) // По столбцам от 0 до максимальной высоты
{
for (int j = 0; j <= maxW - 1; j++) // По строкам от 0 до максимальной ширины
{
... //Те самые 3 строчки
}
}int PixIn[1024][1024] или в C# int[,] PixIn = new int [1024, 1024]; // PixIn - в этот массив будут записаны значения яркости ВСЕЙ пикселей изображения
Решение задачи: «Перевод части кода C++ Builder в C# - работа с изображением»
textual
Листинг программы
fftw inmas, outmas;
inmas = (...)fftw.malloc(N*N*sizeof(...)); // на входе, до БПФ,
outmas = (...)fftw.malloc(N*N*sizeof (...)); // на выходе, после БПФ.
for (int i = 0; i <= N - 1; i++)
{
for (int j = 0; j <= N - 1; j++)
{
//Рассматривается только действительная часть, мнимая часть равна 0
// in[a][b] - a может принимать любое значение от 0,
//b - может принимать 2 значения: 0 для действительной части числа и 1 для мнимой.
inmas[j + i*N, 1] = 0;
inmas[j + i*N, 0] = PixIn[i + i1, j + j1];
}
}