You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 11中TPath控件Fit模式下SVG路径被截断求助

解决Delphi 11中TPath控件Fit模式下SVG路径超出范围的问题

问题根源

TPath的Fit模式会将SVG路径的原始边界框完整适配到控件的Client区域,但默认情况下Stroke.Align为Center(Stroke一半在路径内部、一半在外部)。当Stroke.Thickness较大时,外部的Stroke部分会超出控件边界;而Stretch模式是将路径连同Stroke一起缩放到控件尺寸,所以看起来Stroke是向内的。

可行解决办法

1. 修改Stroke的对齐方式(最直接)

将TPath的Stroke.Align属性设置为Inside,这样整个Stroke都会绘制在路径边界的内部,无论使用Fit还是Stretch模式,都不会出现Stroke超出控件范围的情况:

Path1.Stroke.Align := TStrokeAlign.Inside;

2. 调整控件的Padding属性

给TPath添加与Stroke厚度匹配的内边距,让路径适配到控件的Padding内部区域,预留出Stroke的绘制空间:

  • 将Padding.Left、Padding.Top、Padding.Right、Padding.Bottom都设置为Stroke.Thickness的一半(比如Stroke厚度为5时,各设为3,避免边缘截断)
  • 或者直接将四个方向的Padding都设为Stroke.Thickness,确保足够空间

3. 修改SVG路径的边界范围

手动调整SVG路径的坐标,给Stroke预留出外部空间:

  • 原始圆形路径的边界是1-25(宽高24),中心在13,半径12
  • 若Stroke厚度为5,需要将路径的半径缩小Stroke.Thickness / 缩放比例(缩放比例为控件尺寸/原始路径尺寸,即150/24=6.25,5/6.25=0.8)
  • 修改后的路径为:M13 24.2C19.2274 24.2 24.2 19.2274 24.2 13C24.2 6.77258 19.2274 1.8 13 1.8C6.77258 1.8 1.8 6.77258 1.8 13C1.8 19.2274 6.77258 24.2 13 24.2Z

内容的提问来源于stack exchange,提问作者Haifisch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:35:22