Bitmap bit1 = new Bitmap(bmpimg , width , height);
Bitmap bit2 = new Bitmap(bmp , width , height);
Bitmap bmpresult = new Bitmap(width , height);
BitmapData data1 = bit1.LockBits(new Rectangle(0 , 0 , bit1.Width , bit1.Height) , ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb);
BitmapData data2 = bit2.LockBits(new Rectangle(0 , 0 , bit2.Width , bit2.Height) , ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb);
BitmapData data3 = bmpresult.LockBits(new Rectangle(0 , 0 , bmpresult.Width , bmpresult.Height) , ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb);
unsafe
{
int remain1 = data1.Stride - data1.Width * 3;
int remain2 = data2.Stride - data2.Width * 3;
int remain3 = data3.Stride - data3.Width * 3;
byte* ptr1 = (byte*)data1.Scan0;
byte* ptr2 = (byte*)data2.Scan0;
byte* ptr3 = (byte*)data3.Scan0;
for(int i = 0 ; i < height ; i ++)
{
for(int j = 0 ; j < width * 3 ; j ++)
{
ptr3[ 0 ] = (byte) (XOR_Operator(ptr1[ 0 ] , ptr2[ 0 ]));
ptr1 ++;
ptr2 ++;
ptr3 ++;
}
ptr1 += remain1;
ptr2 += remain2;
ptr3 += remain3;
}
}
bit1.UnlockBits(data1);
bit2.UnlockBits(data2);
bmpresult.UnlockBits(data3);
return bmpresult;
}
è necessario ottenere rimarrà per Data ObjectsQualcuno può spiegare la funzione di passo in bitmapdata?
nel codice sopra riportato è necessario utilizzare data.stride qual è il suo scopo di base? spero che tu possa capire ora – Badr