RGBA イメージを含むネイティブ char* バッファがあります。問題は、Windows スタイルの ARGB ではなく、実際の RGBA 形式であることです。(BGRAの略、後方)
オブジェクトは、コピーせずにバッファから作成する必要があります。
BitmapSource::Create Method (Int32, Int32, Double, Double, PixelFormat, BitmapPalette, IntPtr, Int32, Int32) System BitmapSource
:: Drawing::Bitmap
を試しました、残念ながら、ウィンドウの ARGB 形式のみをサポートしているようで、「通常の」RGBA はサポートしていません。
ここでDeleteObject(BitmapSource ^ )
、使用しているバッファを解放する関数が必要です。オブジェクトの使用後に呼び出す必要があります。
Bitmap を使用すると、非常に簡単です。
void DeleteObject(Bitmap^ bmp)
{
if (bmp == nullptr)
{
return;
}
Rectangle rect(0, 0, bmp->Width, bmp->Height);
System::Drawing::Imaging::BitmapData^ bmpData =
bmp->LockBits(rect, System::Drawing::Imaging::ImageLockMode::ReadWrite,
bmp->PixelFormat);
delete [] (char*) bmpData->Scan0->ToPointer();
bmp->UnlockBits(bmpData);
bmp->~Bitmap();
}
BitmapSource (または RGBA を使用する他のもの) で同様のことをしたいと思います。
BitmapSource
バッファを安全に解放するにはどうすればよいですか?
の基になるバッファを取得するにはどうすればよいBitmapSource
ですか?
RGBA バッファー (Windows スタイルの ARGB ではなく、実際の RGBA) を使用して表示できる他の C# オブジェクトを使用してもかまいません。