110,571
社区成员
发帖
与我相关
我的任务
分享
private bool ScanBitmap(Bitmap SourceBitmap, Bitmap TargetBitmap)
{
BitmapData bmpDATA1 = new BitmapData();
SourceBitmap.LockBits(new Rectangle(0, 0, SourceBitmap.Width, SourceBitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
BitmapData bmpDATA2 = new BitmapData();
TargetBitmap.LockBits(new Rectangle(0, 0, TargetBitmap.Width, TargetBitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
byte[] BTS1 = new byte[bmpDATA1.Stride * bmpDATA1.Height + 1];
byte[] BTS2 = new byte[bmpDATA2.Stride * bmpDATA2.Height + 1];
System.Runtime.InteropServices.Marshal.Copy(bmpDATA1.Scan0, BTS1, 0, BTS1.Length);
System.Runtime.InteropServices.Marshal.Copy(bmpDATA2.Scan0, BTS2, 0, BTS2.Length);
if (BTS1.Length != BTS2.Length) {
return false;
SourceBitmap.UnlockBits(bmpDATA1);
SourceBitmap.UnlockBits(bmpDATA2);
Interaction.MsgBox("两图不同!");
return;
}
for (int I = 0; I <= BTS1.Length - 1; I += 4) {
if (BTS1[I] != BTS2[I] || BTS1[I + 1] != BTS1[I + 1] || BTS1[I + 2] != BTS1[I + 2] || BTS1[I + 3] != BTS1[I + 3]) {
return false;
SourceBitmap.UnlockBits(bmpDATA1);
SourceBitmap.UnlockBits(bmpDATA2);
Interaction.MsgBox("两图不同!");
return;
}
}
return true;
SourceBitmap.UnlockBits(bmpDATA1);
SourceBitmap.UnlockBits(bmpDATA2);
Interaction.MsgBox("两图完全一样");
}
//参数说明:
//SourceBitmap:要比较的源图
//TargetBitmap:要比较的条件图
private bool ImageEquals(Bitmap bmpOne,Bitmap bmpTwo)
{
for (int i = 0; i < bmpOne.Width; i++)
{
for (int j = 0; j < bmpOne.Height; j++)
{
if (bmpOne.GetPixel(i, j) != bmpTwo.GetPixel(i, j))
return false;
}
}
return true;
}