.NetのBitmapをポインタで操作する

自前でピクセルデータとかいじらないし、使い道があるか分からんけど。

Bitmap ^buffer = gcnew Bitmap(256, 256);
// ロック対象矩形
Rectangle rect(0, 0, 256, 256);
// 書き込み専用でbufferをロック
Drawing::Imaging::BitmapData ^bmp_data = buffer->LockBits(rect, Drawing::Imaging::ImageLockMode::WriteOnly, Drawing::Imaging::PixelFormat::Format32bppArgb);
// bufferのアドレスを取得
IntPtr ptr = bmp_data->Scan0;
 // アンマネージドのポインタに変換
unsigned char *buf = (unsigned char*)ptr.ToPointer();
 // グラデーションを書き込む
for(int i = 0; i < 256; i++)
{
    for(int j = 0; j < 256; j++)
    {
        int n = (i * 256 + j) * 4;
        buf[n+0] = i;
        buf[n+1] = j;
        buf[n+2] = 255;
        buf[n+3] = 255;
    }
}

buffer->UnlockBits(bmp_data); // ロック解除

ピクチャボックスとかにセットすれば表示できる。