[{"data":1,"prerenderedAt":125},["ShallowReactive",2],{"page-\u002Fcsharp\u002Favalonia\u002F合成渲染器":3},{"id":4,"title":5,"body":6,"description":12,"extension":118,"meta":119,"navigation":120,"path":121,"seo":122,"stem":123,"__hash__":124},"content\u002Fcsharp\u002FAvalonia\u002F合成渲染器.md","合成渲染器",{"type":7,"value":8,"toc":114},"minimark",[9,13,16,44,47,72,97],[10,11,12],"p",{},"自从avalonia的11更新以来，动画可以分为显示动画和隐式动画：",[10,14,15],{},"显式动画 (Explicit Animations)",[17,18,19,32,38],"ul",{},[20,21,22,26,27,31],"li",{},[23,24,25],"strong",{},"定义:"," 手动从代码中触发的动画，类似于 WPF\u002F传统 Avalonia 中的 ",[28,29,30],"code",{},"BeginAnimation","。",[20,33,34,37],{},[23,35,36],{},"用途:"," 用于精确控制某个属性在特定时间内的变化。",[20,39,40,43],{},[23,41,42],{},"优势:"," 可以脱离 UI 线程运行，避免卡顿。",[10,45,46],{},"隐式动画 (Implicit Animations)",[17,48,49,62,67],{},[20,50,51,53,54,57,58,61],{},[23,52,25],{}," 当 ",[28,55,56],{},"CompositionVisual"," 的某个属性（如 ",[28,59,60],{},"Offset","）发生变化时，渲染器会自动触发的动画。",[20,63,64,66],{},[23,65,36],{}," 主要用于平滑布局变化。例如，当一个控件的父容器改变其位置时，控件不是瞬间跳到新位置，而是平滑地过渡过去。",[20,68,69,71],{},[23,70,42],{}," 极大地简化了平滑布局过渡的代码，开发者无需手动编写动画逻辑。",[10,73,74,75,77,78,80,81,84,85,88,89,92,93,96],{},"每个 Avalonia 控件在新的渲染器中都有一个对应的 ",[28,76,56],{}," 实例。它是所有合成属性（如 ",[28,79,60],{},"、",[28,82,83],{},"Opacity"," 等）的持有者。",[28,86,87],{},"ImplicitAnimations"," 属性，这是实现隐式动画的核心。它是一个集合，将 ",[23,90,91],{},"属性名称"," 映射到 ",[23,94,95],{},"动画对象","。当映射的属性发生变化时，与之关联的动画就会自动播放。",[10,98,99,100,103,104,106,107,109,110,113],{},"而",[28,101,102],{},"Vector3KeyFrameAnimation","用于定义隐式动画的类型。例如，用于动画化 ",[28,105,56],{}," 的 ",[28,108,60],{}," 属性（该属性是 ",[28,111,112],{},"Vector3"," 类型）。",{"title":115,"searchDepth":116,"depth":116,"links":117},"",2,[],"md",{},true,"\u002Fcsharp\u002Favalonia\u002F合成渲染器",{"description":12},"csharp\u002FAvalonia\u002F合成渲染器","GtNu3EPORmooffwyt3ZqsGaKjg7zzmsD74k3-NG8aY4",1791042464912]