D3DImage.AddDirtyRect(Int32Rect) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定后台缓冲区已更改的区域。
public:
void AddDirtyRect(System::Windows::Int32Rect dirtyRect);
[System.Security.SecurityCritical]
public void AddDirtyRect (System.Windows.Int32Rect dirtyRect);
public void AddDirtyRect (System.Windows.Int32Rect dirtyRect);
[<System.Security.SecurityCritical>]
member this.AddDirtyRect : System.Windows.Int32Rect -> unit
member this.AddDirtyRect : System.Windows.Int32Rect -> unit
Public Sub AddDirtyRect (dirtyRect As Int32Rect)
参数
- 属性
例外
对 Lock() 或 TryLock(Duration) 方法的调用未锁定位图。
- 或 - 未通过调用 SetBackBuffer(D3DResourceType, IntPtr) 方法分配后台缓冲区。
存在下列一种或多种情况时。
dirtyRect.X
< 0
dirtyRect.Y
< 0
dirtyRect.Width
< 0 或dirtyRect.Width
>PixelWidthdirtyRect.Height
<0 或dirtyRect.Height
> PixelHeight
示例
下面的代码示例演示如何调用 AddDirtyRect 该方法以在后台缓冲区中指定已更改的区域。 有关详细信息,请参阅演练:在 WPF 中托管 Direct3D9 内容。
d3dimg.Lock();
// Repeatedly calling SetBackBuffer with the same IntPtr is
// a no-op. There is no performance penalty.
d3dimg.SetBackBuffer(D3DResourceType.IDirect3DSurface9, pSurface);
HRESULT.Check(Render());
d3dimg.AddDirtyRect(new Int32Rect(0, 0, d3dimg.PixelWidth, d3dimg.PixelHeight));
d3dimg.Unlock();
注解
调用该方法 AddDirtyRect 以指示代码对后缓冲区所做的更改。 若要呈现,后缓冲区上的已更改区域必须具有 D3DImage相应的更改区域。
SetBackBuffer在调用该方法之前调用AddDirtyRect和Lock方法。
Unlock调用该方法以将更改的区域复制到前缓冲区。
备注
对该方法的几个调用 AddDirtyRect 后,更改的区域将合并到单个区域。 这意味着必须在更改区域之外拥有有效数据。