RenderTargetBitmap.RenderAsync 方法

定义

重载

RenderAsync(UIElement)

UIElement 可视化树的快照呈现给图像源。

RenderAsync(UIElement, Int32, Int32)

UIElement 可视化树的快照呈现给图像源。 指定 scaledWidthscaledHeight 的值以更改原始源的呈现维度。

RenderAsync(UIElement)

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

参数

element
UIElement

表示要呈现的可视化树片段的 UIElement

返回

可用于控制异步操作的 IAsyncAction 对象。

属性

注解

此方法不返回呈现的图像。 但返回后,只要异步 Status 值不指示错误,调用它的 RenderTargetBitmap 将具有有效的图像信息。 然后,可以在代码中将 RenderTargetBitmap 分配为 Image 控件或 ImageBrush 实例的图像源。

如果需要呈现内容的像素缓冲区表示形式,而不仅仅是图像源,请在调用 RenderAsync 后使用 GetPixelsAsync

这是一种异步方法,因此无法保证与 UI 源进行精确的帧同步。 有关其他一些限制的信息,请参阅 RenderTargetBitmap 中的备注。

可以为元素参数传递 null,并呈现应用的根可视化树。

XAML 视觉对象和 RenderTargetBitmap 捕获功能

对于 XAML 组合的视觉内容,有一些方案无法捕获到 RenderTargetBitmap

  • 无法使用 RenderTargetBitmap 捕获 MediaPlayerElement 中的视频内容。 这包括从视频内容中捕获帧。
  • 无法使用 RenderTargetBitmap 捕获 SwapChainBackgroundPanelSwapChainPanel 中的自定义 Microsoft DirectX 内容 (自己的交换链) 。
  • 不会捕获树中其 可见性 设置为 “折叠 ”的内容。
  • 不会捕获未直接连接到 XAML 可视化树的内容和main窗口的内容。 这包括 弹出窗口 内容,该内容被视为类似于子窗口。
  • 无法捕获的内容将在捕获的图像中显示为空白,但同一可视化树中的其他内容仍可捕获,并且将呈现 (存在无法捕获的内容不会使该 XAML 合成) 的整个捕获失效。
  • 如果 XAML 可视化树中的内容不是“ 可见性 = 折叠 ”或在其他受限情况下,就可以捕获在屏幕外的内容。

另请参阅

适用于

RenderAsync(UIElement, Int32, Int32)

UIElement 可视化树的快照呈现给图像源。 指定 scaledWidthscaledHeight 的值以更改原始源的呈现维度。

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

参数

element
UIElement

表示要呈现的可视化树片段的 UIElement

scaledWidth
Int32

int

指定要呈现的目标宽度。 默认值为 0。 scaledWidth 和/或 scaledHeight 可以是可选的;请参阅备注。

scaledHeight
Int32

int

指定要呈现的目标高度。 默认值为 0。 scaledWidth 和/或 scaledHeight 可以是可选的;请参阅备注。

返回

可用于控制异步操作的 IAsyncAction 对象。

属性

注解

此方法不返回呈现的图像。 但返回后,只要异步 Status 值不指示错误,调用它的 RenderTargetBitmap 将具有有效的图像信息。 然后,可以在代码中将 RenderTargetBitmap 分配为 Image 控件或 ImageBrush 实例的图像源。

如果需要呈现内容的像素缓冲区表示形式,而不仅仅是图像源,请在调用 RenderAsync 后使用 GetPixelsAsync

这是一种异步方法,因此无法保证与 UI 源进行精确的帧同步。 有关其他一些限制的信息,请参阅 RenderTargetBitmap 中的备注。

如果 UIElement 可视化树的缩放高度或宽度大于系统能够在内部分配的视频内存量,则调用 RenderAsync 将失败。

可以为元素参数传递 null,并呈现应用的根可视化树。

scaledWidthscaledHeight

如果同时设置了 scaledWidthscaledHeight ,则会忽略原始位图的纵横比,并且值可能会更改纵横比。

如果指定 了 scaledWidthscaledHeight ,但不同时指定两者,则你提供的值将控制该维度,但纵横比将保留 (另一个维度,具体取决于将原始位图的纵横比) 进行分解。

可以调用此方法,并将 scaledWidthscaledHeight 值都保留为 0。 在这种情况下, UIElement 树将以其本机大小呈现。 这与 RenderAsync (UIElement) 重载的行为相同。

XAML 可视化树的最大呈现大小受 Microsoft DirectX 纹理的最大尺寸限制;有关详细信息,请参阅 资源限制 () 。 此资源限制可能因运行应用的硬件而异。 超出此限制的非常大的内容可能会进行缩放以适应。 如果以这种方式应用缩放限制,则可以使用 PixelWidthPixelHeight 属性查询缩放后呈现的大小。 例如,10000 x 10000 像素的 XAML 可视化树可以缩放为 4096 x 4096 像素,这是应用 2D 纹理的特定资源限制的示例。

XAML 视觉对象和 RenderTargetBitmap 捕获功能

对于 XAML 组合的视觉内容,有一些方案无法捕获到 RenderTargetBitmap

  • 无法使用 RenderTargetBitmap 捕获 MediaPlayerElement 中的视频内容。 这包括从视频内容中捕获帧。
  • 无法使用 RenderTargetBitmap 捕获 SwapChainBackgroundPanelSwapChainPanel 中的自定义 Microsoft DirectX 内容 (自己的交换链) 。
  • 不会捕获树中其 可见性 设置为 “折叠 ”的内容。
  • 不会捕获未直接连接到 XAML 可视化树的内容和main窗口的内容。 这包括 弹出窗口 内容,该内容被视为类似于子窗口。
  • 对于 Windows Phone 8.x 应用:无法将 WebView 控件的内容呈现到 RenderTargetBitmap 中。
  • 无法捕获的内容将在捕获的图像中显示为空白,但同一可视化树中的其他内容仍可捕获,并且将呈现 (存在无法捕获的内容不会使该 XAML 合成) 的整个捕获失效。
  • 如果 XAML 可视化树中的内容不是“ 可见性 = 折叠 ”或在其他受限情况下,就可以捕获在屏幕外的内容。

另请参阅

适用于