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 对象。
- 属性
注解
此方法不返回呈现的图像。 但返回后,只要异步 Status 值不指示错误,调用它的 RenderTargetBitmap 将具有有效的图像信息。 然后,可以在代码中将 RenderTargetBitmap 分配为 Image 控件或 ImageBrush 实例的图像源。
如果需要呈现内容的像素缓冲区表示形式,而不仅仅是图像源,请在调用 RenderAsync 后使用 GetPixelsAsync 。
这是一种异步方法,因此无法保证与 UI 源进行精确的帧同步。 有关其他一些限制的信息,请参阅 RenderTargetBitmap 中的备注。
可以为元素参数传递 null,并呈现应用的根可视化树。
XAML 视觉对象和 RenderTargetBitmap 捕获功能
对于 XAML 组合的视觉内容,有一些方案无法捕获到 RenderTargetBitmap:
- 无法使用 RenderTargetBitmap 捕获 MediaPlayerElement 中的视频内容。 这包括从视频内容中捕获帧。
- 无法使用 RenderTargetBitmap 捕获 SwapChainBackgroundPanel 或 SwapChainPanel 中的自定义 Microsoft DirectX 内容 (自己的交换链) 。
- 不会捕获树中其 可见性 设置为 “折叠 ”的内容。
- 不会捕获未直接连接到 XAML 可视化树的内容和main窗口的内容。 这包括 弹出窗口 内容,该内容被视为类似于子窗口。
- 无法捕获的内容将在捕获的图像中显示为空白,但同一可视化树中的其他内容仍可捕获,并且将呈现 (存在无法捕获的内容不会使该 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 对象。
- 属性
注解
此方法不返回呈现的图像。 但返回后,只要异步 Status 值不指示错误,调用它的 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 x 4096 像素,这是应用 2D 纹理的特定资源限制的示例。
XAML 视觉对象和 RenderTargetBitmap 捕获功能
对于 XAML 组合的视觉内容,有一些方案无法捕获到 RenderTargetBitmap:
- 无法使用 RenderTargetBitmap 捕获 MediaPlayerElement 中的视频内容。 这包括从视频内容中捕获帧。
- 无法使用 RenderTargetBitmap 捕获 SwapChainBackgroundPanel 或 SwapChainPanel 中的自定义 Microsoft DirectX 内容 (自己的交换链) 。
- 不会捕获树中其 可见性 设置为 “折叠 ”的内容。
- 不会捕获未直接连接到 XAML 可视化树的内容和main窗口的内容。 这包括 弹出窗口 内容,该内容被视为类似于子窗口。
- 对于 Windows Phone 8.x 应用:无法将 WebView 控件的内容呈现到 RenderTargetBitmap 中。
- 无法捕获的内容将在捕获的图像中显示为空白,但同一可视化树中的其他内容仍可捕获,并且将呈现 (存在无法捕获的内容不会使该 XAML 合成) 的整个捕获失效。
- 如果 XAML 可视化树中的内容不是“ 可见性 = 折叠 ”或在其他受限情况下,就可以捕获在屏幕外的内容。