public static PixelData LockBits(Bitmap image, Rectangle rect, ImageLockMode flags) { var format = PixelFormat.Format32bppArgb; if (image.PixelFormat != format) { throw new Exception(); } var bitmapData = image.LockBits(rect, flags, format); var data = new PixelData(image, bitmapData); try { data.Initialize(); } catch { data.Dispose(); throw; } return(data); }