public void AddDirtyRect(Int32Rect dirtyRect) { WritePreamble(); if (_lockCount == 0) { throw new InvalidOperationException(SR.Get(SRID.Image_MustBeLocked)); } if (_pInteropDeviceBitmap == null) { throw new InvalidOperationException(SR.Get(SRID.D3DImage_MustHaveBackBuffer)); } dirtyRect.ValidateForDirtyRect("dirtyRect", PixelWidth, PixelHeight); if (dirtyRect.HasArea) { // Unmanaged code will make sure that the rect is well-formed HRESULT.Check(UnsafeNativeMethods.InteropDeviceBitmap.AddDirtyRect( dirtyRect.X, dirtyRect.Y, dirtyRect.Width, dirtyRect.Height, _pInteropDeviceBitmap )); // We're now dirty, but we won't consider it a change until Unlock _isDirty = true; _isChangePending = true; } }
public void AddDirtyRect(Int32Rect dirtyRect) { WritePreamble(); if (_lockCount == 0) { throw new InvalidOperationException(SR.Get(SRID.Image_MustBeLocked)); } // // Sanitize the dirty rect. // dirtyRect.ValidateForDirtyRect("dirtyRect", _pixelWidth, _pixelHeight); if (dirtyRect.HasArea) { MILSwDoubleBufferedBitmap.AddDirtyRect( _pDoubleBufferedBitmap, ref dirtyRect); _hasDirtyRects = true; } // Note: we do not call WritePostscript because we do not want to // raise change notifications until the writeable bitmap is unlocked. }