次の方法で共有


CompositionTarget.Rendering イベント

定義

コア レンダリング プロセスがフレームをレンダリングするときに発生します。

// 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 イベントのハンドラーの 2 番目の e/args パラメーターが Object である必要があります。 EventArgs を使用しないでください。 ただし、ハンドラー内では、 e/args 参照をRenderingEventArgs としてキャストできます。 RenderingEventArgs には、レンダリング シナリオで役立つプロパティ RenderingTime が 1 つありますが、すべてのハンドラーでこの情報が必要になるわけではありません。 イベントが発生し、発生するたびに処理されることを知るだけで十分な場合があります。

レンダリング用のハンドラーは、特定の UI 要素に関連付けられていない場合でも、UI スレッドで実行されます。 これは、無限のアニメーションを実行するのと似ています。 通常、UI スレッドは実行する作業がある場合にのみアクティブになりますが、このイベントのハンドラーを追加すると、すべてのフレームが強制的に実行され、システムの電力使用の最適化が妨げられる可能性があります。 そのため、必要なくなったレンダリング ハンドラーを削除し、必要な場合にのみ追加することをお勧めします。 たとえば、同期された DirectX コンテンツを持つ特定のページが読み込まれた場合にのみハンドラーを追加し、ページ クリーンアップの一部としてハンドラーを削除します (Page.OnNavigatedFrom)。 詳細については、 パフォーマンス ガイドの「無限アニメーションを慎重に使用する」セクションを参照してください

適用対象

こちらもご覧ください