D3DImage.IsFrontBufferAvailable 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得指出前景緩衝區是否存在的值。
public:
property bool IsFrontBufferAvailable { bool get(); };
public bool IsFrontBufferAvailable { get; }
member this.IsFrontBufferAvailable : bool
Public ReadOnly Property IsFrontBufferAvailable As Boolean
屬性值
如果前景緩衝區存在,則為 true
,否則為 false
。
範例
下列程式碼範例示範如何在呈現組合目標時檢查 IsFrontBufferAvailable 屬性。 如需詳細資訊,請參閱 逐步解說:在 WPF 中裝載 Direct3D9 內容。
void CompositionTarget_Rendering(object sender, EventArgs e)
{
RenderingEventArgs args = (RenderingEventArgs)e;
// It's possible for Rendering to call back twice in the same frame
// so only render when we haven't already rendered in this frame.
if (d3dimg.IsFrontBufferAvailable && _lastRender != args.RenderingTime)
{
IntPtr pSurface = IntPtr.Zero;
HRESULT.Check(GetBackBufferNoRef(out pSurface));
if (pSurface != IntPtr.Zero)
{
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();
_lastRender = args.RenderingTime;
}
}
}
備註
有時候,前端緩衝區會變成無法使用。 缺乏可用性可能是因為螢幕鎖定、全螢幕獨佔 Direct3D 應用程式、使用者切換或其他系統活動所造成。 發生這種情況時,您的 WPF 應用程式會藉由處理 IsFrontBufferAvailableChanged 事件來收到通知。 您的應用程式如何回應前端緩衝區變成無法使用,取決於 WPF 是否已啟用回復軟體轉譯。 SetBackBuffer方法具有多載,其採用參數,指定 WPF 是否回復為軟體轉譯。 如需詳細資訊,請參閱 類別中的 D3DImage 備註。
相依性屬性資訊
識別碼欄位 | IsFrontBufferAvailableProperty |
設定為 的中繼資料屬性 true |
無 |