2
我正在編寫一個函數來獲取visual studio 2010中兩個位圖圖像之間的差異。我有一個函數將兩個位圖圖像作爲參數,我使用解鎖位來獲取每個像素的數據,這兩個圖像的分辨率和尺寸都是相同的。使用不安全的方法比較兩個圖像數據
當我使用的解鎖位只有一個像它工作得很好,但是當我在同一個函數使用它都同時它提供了一個例外
BITMAP地區已經鎖定
代碼:
public Bitmap Invert(Bitmap b,Bitmap c)
{
BitmapData bmData =
b.LockBits(new System.Drawing.Rectangle(0, 0, b.Width, b.Height),
ImageLockMode.ReadWrite,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
int stride = bmData.Stride;
System.IntPtr Scan0 = bmData.Scan0;
// for image 2
BitmapData data2 =
c.LockBits(new System.Drawing.Rectangle(0,
0,
c.Width,
c.Height),
ImageLockMode.ReadWrite,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
int stride1 = data2.Stride;
System.IntPtr Scan1 = data2.Scan0;
unsafe
{
byte* p = (byte*)(void*)Scan0;
byte* q = (byte*)(void*)Scan1;
nOffset = stride - b.Width * 3;
nWidth = b.Width * 3;
for (y = 0; y < b.Height; ++y)
{
for (x = 0; x < nWidth; ++x)
{
p[0] = (byte)(p[0]-q[0]);
++p;
++q;
}
p += nOffset;
q += nOffset;
}
}
b.UnlockBits(bmData);
c.UnlockBits(data2);
return b;
}
它在哪裏崩潰? – 2013-04-09 10:50:53
WPF?爲什麼不使用'WriteableBitmap'而不是'System.Drawing'類型? – 2013-04-09 10:51:04
請告訴我們'object.ReferenceEquals(b,c)'的結果在方法開始時會返回。 – 2013-04-09 10:51:41