SuperAPI AI 工具集

wpf-rule-rendering-antipatterns

通用与其它

查看项目

更新于 10-15 20:12

技能介绍

用途:整理 WPF 渲染中常见的性能与视觉问题反模式,帮助开发者规避导致掉帧、卡顿或画面异常的错误写法。

主要能力:

  1. 反模式一:在循环中调用 InvalidateVisual()。每次调用都会排队一次布局/渲染周期,WPF 不会合并这些调用,循环 N 次即排队 N 次渲染,造成掉帧或冻结。正确做法是批量更新:先修改全部状态,循环结束后只调用一次 InvalidateVisual()。对于数据驱动、各项会单独通知的场景,可在批量更新期间抑制通知,结束时统一触发一次重置。
  2. 反模式二:在 OnRender 中创建资源。OnRender 在每次渲染通道都会被调用(布局变化、动画、窗口缩放等),在其中分配 Brush、Pen、Geometry 等对象会每帧产生垃圾。正确做法是把资源创建移到构造函数或属性 setter 中,并参考 freezable-performance.md 的构造初始化并冻结模式。

使用方式:作为编码规范或代码审查清单,检查渲染相关代码是否出现上述两种写法,并按给出的批量更新与资源预创建方式改写。

适用场景:WPF 自定义控件、自绘元素、数据可视化等涉及 OnRender 与 InvalidateVisual 的性能敏感场景。

限制:资料仅覆盖上述两类反模式,未提供其他渲染问题、具体性能数据、平台版本或完整示例;相关命令与代码保持原样,未提供安装方式。