/// <summary> /// Implements the operator |. /// </summary> /// <param name="Image1">The first image.</param> /// <param name="Image2">The second image</param> /// <returns>The result of the operator.</returns> public static SwiftBitmap operator |(SwiftBitmap Image1, SwiftBitmap Image2) { Contract.Requires <ArgumentNullException>(Image1 != null, "Image1"); Contract.Requires <ArgumentNullException>(Image2 != null, "Image2"); Image1.Lock(); Image2.Lock(); var Result = new SwiftBitmap(Image1.Width, Image1.Height); Result.Lock(); Parallel.For(0, Result.Width, x => { for (int y = 0; y < Result.Height; ++y) { var Pixel1 = Image1.GetPixel(x, y); var Pixel2 = Image2.GetPixel(x, y); Result.SetPixel(x, y, Color.FromArgb(Pixel1.R | Pixel2.R, Pixel1.G | Pixel2.G, Pixel1.B | Pixel2.B)); } }); Image2.Unlock(); Image1.Unlock(); return(Result.Unlock()); }