CompositionTarget.Rendering 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当核心呈现过程呈现帧时发生。
// Register
static event_token Rendering(EventHandler<IInspectable> const& handler) const;
// Revoke with event_token
static void Rendering(event_token const* cookie) const;
// Revoke with event_revoker
static CompositionTarget::Rendering_revoker Rendering(auto_revoke_t, EventHandler<IInspectable> const& handler) const;
public static event System.EventHandler<object> Rendering;
function onRendering(eventArgs) { /* Your code */ }
Microsoft.UI.Xaml.Media.CompositionTarget.addEventListener("rendering", onRendering);
Microsoft.UI.Xaml.Media.CompositionTarget.removeEventListener("rendering", onRendering);
- or -
Microsoft.UI.Xaml.Media.CompositionTarget.onrendering = onRendering;
Public Shared Custom Event Rendering As EventHandler(Of Object)
事件类型
注解
如果具有与 Microsoft DirectX 内容的互操作方案,则处理呈现非常有用。 例如,你可能想要了解 XAML 框架何时呈现帧,并将其与 SwapChainPanel 或 SurfaceImageSource 中的 Microsoft DirectX 生成的内容同步,以便同时在屏幕上显示视觉更新。 有关详细信息,请参阅 DirectX 和 XAML 互操作。
为了满足编译器,Rendering 事件的处理程序的第二个 e/args 参数必须为 Object。 请勿使用 EventArgs。 但是,在处理程序中,可以将 e/args 引用强制转换为 RenderingEventArgs。 RenderingEventArgs 有一个属性 RenderingTime,该属性在呈现方案中可能很有用,但并非所有处理程序都需要此信息。 只需知道事件会触发并处理每个事件就足够了。
用于呈现的处理程序在 UI 线程上运行,即使它们未绑定到任何特定的 UI 元素。 这类似于运行无限动画。 通常,UI 线程仅在有工作要做时才处于活动状态,但为此事件添加处理程序会强制它运行每一个可能会阻止系统电源使用优化的帧。 因此,最好在不再需要任何呈现处理程序时删除它们,并仅在确实需要时才添加它们。 例如,仅当加载具有同步 DirectX 内容的特定页面时,才添加处理程序,然后在页面清理过程中删除处理程序, (Page.OnNavigatedFrom) 。 有关详细信息,请参阅 性能指南的“谨慎使用无限动画”部分。