1: /// <summary>
2: /// ands two images
3: /// </summary>
4: /// <param name="Image1">Image to manipulate</param>
5: /// <param name="Image2">Image to manipulate</param>
6: /// <returns>A bitmap image</returns>
7: public static Bitmap And(Bitmap Image1, Bitmap Image2)
8: {
9: Bitmap NewBitmap = new Bitmap(Image1.Width, Image1.Height);
10: BitmapData NewData = Image.LockImage(NewBitmap);
11: BitmapData OldData1 = Image.LockImage(Image1);
12: BitmapData OldData2 = Image.LockImage(Image2);
13: int NewPixelSize = Image.GetPixelSize(NewData);
14: int OldPixelSize1 = Image.GetPixelSize(OldData1);
15: int OldPixelSize2 = Image.GetPixelSize(OldData2);
16: for (int x = 0; x < NewBitmap.Width; ++x)
17: {
18: for (int y = 0; y < NewBitmap.Height; ++y)
19: {
20: Color Pixel1 = Image.GetPixel(OldData1, x, y, OldPixelSize1);
21: Color Pixel2 = Image.GetPixel(OldData2, x, y, OldPixelSize2);
22: Image.SetPixel(NewData, x, y,
23: Color.FromArgb(Pixel1.R & Pixel2.R,
24: Pixel1.G & Pixel2.G,
25: Pixel1.B & Pixel2.B),
26: NewPixelSize);
27: }
28: }
29: Image.UnlockImage(NewBitmap, NewData);
30: Image.UnlockImage(Image1, OldData1);
31: Image.UnlockImage(Image2, OldData2);
32: return NewBitmap;
33: }