慎用 CompositionTarget.Rendering
在WPF中使用
private void RollLabel_Unloaded(object sender, RoutedEventArgs e)
{
CompositionTarget.Rendering -= CompositionTarget_Rendering;
}
private void RollLabel_Loaded(object sender, RoutedEventArgs e)
{
CompositionTarget.Rendering += CompositionTarget_Rendering;
}
private void CompositionTarget_Rendering(object? sender, EventArgs e)
{
InvalidateVisual();
}
虽然保证了动画看上去更丝滑,但这个是按帧执行的,具体一秒多少帧取决于电脑支持的最大帧数。
但是很占用GPU,一个小的移动的动画使用CompositionTarget.Rendering就直接占用60%的GPU
跟 DispatcherTimer 相比较
优势
- 同样的帧数,占用同样的GPU,明显
CompositionTarget
比DispatcherTimer
的动画更流畅,DispatcherTimer
有明显的卡顿感。
劣势
DispatcherTimer
支持自定义时间间隔,可以减少帧数来减少GPU占用
转载请保留原文链接: https://zodream.cn/blog/id/229.html