WritableBitmapでピクセルを操作するための高速なアプローチは何ですか(私はWritableBitmapEx拡張機能も使用しています)?SetPixelは、ペイントのようなアプリケーションの背景を塗りつぶすなどの非常に遅い方法であり、メモリの破損などの奇妙なことも行います(理由はわかりません)。
1 に答える
1
SetPixelは非常に遅い-それは本当です。
LockBitsメソッドを使用してから、安全でないコード(ピクセルのポインター)を使用してすべてのピクセルを反復処理する必要があります。
例:
// lock the bitmap.
var data = image.LockBits(
new Rectangle(0, 0, image.Width, image.Height),
ImageLockMode.ReadWrite, image.PixelFormat);
try
{
unsafe
{
// get a pointer to the data.
byte* ptr = (byte*)data.Scan0;
// loop over all the data.
for (int i = 0; i < data.Height; i++)
{
for (int j = 0; j < data.Width; j++)
{
operate with pixels.
}
}
}
}
finally
{
// unlock the bits when done or when
// an exception has been thrown.
image.UnlockBits(data);
}
この記事を読むことをお勧めします。
于 2012-10-31T21:29:10.277 に答える