Необработанный перевод на C ++ / CLI, я не запускал пример, поэтому он может содержит некоторые опечатки.В любом случае, есть разные способы получить один и тот же результат в C ++ (потому что вы можете использовать стандартный CRT API).
Bitmap^ Visualize ()
{
PixelFormat fmt = System::Drawing::Imaging::PixelFormat::Format24bppRgb;
Bitmap^ result = gcnew Bitmap( Width, Height, fmt );
BitmapData^ data = result->LockBits( Rectangle( 0, 0, Width, Height ), ImageLockMode::ReadOnly, fmt );
for ( int y = 0; y < Height; y++ )
{
unsigned char* ptr = reinterpret_cast<unsigned char*>((data->Scan0 + y * data->Stride).ToPointer());
for ( int x = 0; x < Width; x++ )
{
float num = 0.44f;
unsigned char c = static_cast<unsigned char>(255.0f * num);
ptr[0] = ptr[1] = ptr[2] = c;
ptr += 3;
}
}
result->UnlockBits( data );
return result;
}