RenderTargetBitmap.RenderAsync 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
RenderAsync(UIElement) |
將 UIElement 視覺化樹狀結構的快照集轉譯為影像來源。 |
RenderAsync(UIElement, Int32, Int32) |
將 UIElement 視覺化樹狀結構的快照集轉譯為影像來源。 指定 scaledWidth 和 scaledHeight 的值,以改變原始來源的轉譯維度。 |
RenderAsync(UIElement)
public:
virtual IAsyncAction ^ RenderAsync(UIElement ^ element) = RenderAsync;
/// [Windows.Foundation.Metadata.Overload("RenderAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction RenderAsync(UIElement const& element);
[Windows.Foundation.Metadata.Overload("RenderAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction RenderAsync(UIElement element);
function renderAsync(element)
Public Function RenderAsync (element As UIElement) As IAsyncAction
參數
傳回
IAsyncAction物件,可用來控制非同步作業。
- 屬性
備註
這個方法不會傳回轉譯的影像。 但在傳回之後,只要非同步 狀態 值未指出錯誤,呼叫它的 RenderTargetBitmap 就會有有效的影像資訊。 RenderTargetBitmap接著可以在程式碼中指派為Image控制項或ImageBrush實例的影像來源。
如果您需要轉譯內容的圖元緩衝區表示,而不只是影像來源,請在呼叫 RenderAsync 之後使用 GetPixelsAsync 。
這是非同步方法,因此不保證確切的畫面同步處理與 UI 來源。 如需其他限制的詳細資訊,請參閱 RenderTargetBitmap 中的備註。
您可以傳遞元素參數的Null,並轉譯應用程式的根視覺化樹狀結構。
XAML 視覺效果和 RenderTargetBitmap 擷取功能
XAML 撰寫的視覺內容有幾個案例,您無法擷取至 RenderTargetBitmap:
- MediaElement 或 CaptureElement中的視訊內容無法使用RenderTargetBitmap來擷取。 這包括從視訊內容中擷取畫面格。
- 自訂 Microsoft DirectX 內容 (您自己的交換鏈結) SwapChainBackgroundPanel 或 SwapChainPanel 無法使用 RenderTargetBitmap來擷取。
- 樹狀結構中,但其 可見度 設定為 Collapsed 的內容將不會擷取。
- 未直接連線到 XAML 視覺化樹狀結構的內容,而且不會擷取主視窗的內容。 這包括 快顯 內容,這被視為類似子視窗。
- 對於 Windows Phone 8.x 應用程式:WebView控制項的內容無法轉譯為RenderTargetBitmap。
- 無法擷取的內容會在擷取的影像中顯示為空白,但相同視覺化樹狀結構中的其他內容仍可擷取,而且會轉譯 (無法擷取的內容存在,並不會使該 XAML 組合的整個擷取失效) 。
- XAML 視覺化樹狀結構中但螢幕外畫面中的內容可以擷取,只要它不是[可見度 = 折迭] 或在其他受限制的案例中即可。
另請參閱
適用於
RenderAsync(UIElement, Int32, Int32)
public:
virtual IAsyncAction ^ RenderAsync(UIElement ^ element, int scaledWidth, int scaledHeight) = RenderAsync;
/// [Windows.Foundation.Metadata.Overload("RenderToSizeAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction RenderAsync(UIElement const& element, int const& scaledWidth, int const& scaledHeight);
[Windows.Foundation.Metadata.Overload("RenderToSizeAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction RenderAsync(UIElement element, int scaledWidth, int scaledHeight);
function renderAsync(element, scaledWidth, scaledHeight)
Public Function RenderAsync (element As UIElement, scaledWidth As Integer, scaledHeight As Integer) As IAsyncAction
參數
- scaledWidth
-
Int32
int
指定要呈現的目標寬度。 預設值是 0。 scaledWidth 和/或 scaledHeight 可以是選擇性的;請參閱。
- scaledHeight
-
Int32
int
指定要呈現的目標高度。 預設值是 0。 scaledWidth 和/或 scaledHeight 可以是選擇性的;請參閱。
傳回
IAsyncAction物件,可用來控制非同步作業。
- 屬性
備註
這個方法不會傳回轉譯的影像。 但在傳回之後,只要非同步 狀態 值未指出錯誤,呼叫它的 RenderTargetBitmap 就會有有效的影像資訊。 RenderTargetBitmap接著可以在程式碼中指派為Image控制項或ImageBrush實例的影像來源。
如果您需要轉譯內容的圖元緩衝區表示,而不只是影像來源,請在呼叫RenderAsync之後使用GetPixelsAsync。
這是非同步方法,因此不保證確切的畫面同步處理與 UI 來源。 如需其他限制的詳細資訊,請參閱 RenderTargetBitmap 中的備註。
如果UIElement視覺化樹狀結構的縮放高度或寬度大於系統可在內部配置的視訊記憶體數量,呼叫RenderAsync將會失敗。
您可以傳遞元素參數的Null,並轉譯應用程式的根視覺化樹狀結構。
scaledWidth 和 scaledHeight 值
如果 同時設定 scaledWidth 和 scaledHeight ,則會忽略原始點陣圖的外觀比例,而且您的值可以改變外觀比例。
如果指定 scaledWidth 或 scaledHeight ,但未同時指定兩者,則您提供該維度但外觀比例的值會保留 (另一個維度會根據根據原始點陣圖的外觀比例來計算) 。
您可以呼叫此方法,並將 scaledWidth 和 scaledHeight 值保留為 0。 在此情況下, UIElement 樹狀結構會以原生大小呈現。 這與 RenderAsync (UIElement) 多載的行為相同。
XAML 視覺化樹狀結構的最大轉譯大小受限於 Microsoft DirectX 紋理的最大維度;如需詳細資訊,請參閱 資源限制 () 。 此資源限制可能會因應用程式執行所在的硬體而有所不同。 超過此限制的非常大型內容可能會調整為符合。 如果以這種方式套用縮放限制,可以使用 PixelWidth 和 PixelHeight 屬性查詢縮放後的轉譯大小。 例如,10000 x 10000 圖元 XAML 視覺化樹狀結構可能會縮放為 4096 圖元,例如套用 2D 紋理的特定資源限制。
XAML 視覺效果和 RenderTargetBitmap 擷取功能
XAML 撰寫的視覺內容有幾個案例,您無法擷取至 RenderTargetBitmap:
- MediaElement 或 CaptureElement中的視訊內容無法使用RenderTargetBitmap來擷取。 這包括從視訊內容中擷取畫面格。
- 自訂 Microsoft DirectX 內容 (您自己的交換鏈結) SwapChainBackgroundPanel 或 SwapChainPanel 無法使用 RenderTargetBitmap來擷取。
- 樹狀結構中,但其 可見度 設定為 Collapsed 的內容將不會擷取。
- 未直接連線到 XAML 視覺化樹狀結構的內容,而且不會擷取主視窗的內容。 這包括 快顯 內容,這被視為類似子視窗。
- 對於 Windows Phone 8.x 應用程式:WebView控制項的內容無法轉譯為RenderTargetBitmap。
- 無法擷取的內容會在擷取的影像中顯示為空白,但相同視覺化樹狀結構中的其他內容仍可擷取,而且會轉譯 (無法擷取的內容存在,並不會使該 XAML 組合的整個擷取失效) 。
- XAML 視覺化樹狀結構中但螢幕外畫面中的內容可以擷取,只要它不是[可見度 = 折迭] 或在其他受限制的案例中即可。