private void Unlock() { if (!_isLocked) throw new InvalidOperationException(); unsafe { _scan0 = null; } Bitmap.UnlockBits(_bitmapData); _isLocked = false; }
private void Lock() { if (_isLocked) throw new InvalidOperationException(); _isLocked = true; _bitmapData = Bitmap.LockBits(_bitmapDimensions, ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); unsafe { _scan0 = (NativeColor*)_bitmapData.Scan0.ToPointer(); } }