SuperAPI AI 工具集

using-and-extending-gdi-plus

前端与建站

查看项目

更新于 10-16 05:06

技能介绍

用途:该技能给出在 WinForms 运行时使用 GDI+ 绘制,以及向 System.Drawing 添加新绘制 API 时应遵循的规则。核心原则是:能缓存就缓存、必须释放就释放、修改图形状态后务必还原。

主要能力:

  1. 对象缓存。优先使用 SystemPens 与 SystemBrushes(其对象不得释放);需要其他颜色时改用缓存作用域,如 using var pen = color.GetCachedPenScope(); 或 color.GetCachedPenScope(2)(整数宽度)、color.GetCachedSolidBrushScope()。若笔需要 DashStyle、CustomStartCap 等额外配置,则必须用非缓存对象并显式释放。重构返回 Pen/SolidBrush 的私有辅助方法时,可直接改为返回作用域类型;公共/内部方法则新增返回作用域的方法并保留原方法。
  2. GraphicsInternal。控件绘制中优先用 e.GraphicsInternal 替代 e.Graphics,但不要把它传给其他方法。若需修改裁剪或变换,应先 Save(),在 finally 中 Restore()。
  3. 质量设置还原。修改 SmoothingMode、TextRenderingHint、InterpolationMode、CompositingQuality、PixelOffsetMode 后须恢复原值。
  4. 资源管理。不可缓存的 GDI+ 对象必须释放;GraphicsPath 永不缓存,本地创建、使用并释放;避免过早释放,不要把作用域对象传给可能在作用域结束后才使用它的代码。

添加新绘制原语:新增公共 API 必须用 #if NET11_0_OR_GREATER(或相应目标版本)保护;每个原语提供整数与浮点两个重载,整数重载委托给浮点重载并用 <inheritdoc cref> 继承文档;形状原语同时提供 Draw 与 Fill;若基于路径,还需在 GraphicsPath 添加对应 Add[Shape] 方法;浮点重载承载完整 XML 文档;新方法应紧邻相关既有方法放置。提交前核对版本守卫、重载、Draw/Fill 配对、路径方法、文档、缓存与释放、状态还原及测试等检查项。

适用场景:WinForms 控件自绘、位图与字体渲染、System.Drawing 新绘制 API 的实现与评审。

限制:资料未提供支持平台范围、性能数据、收费信息等,暂未提供。