WPF Path控件StrokeThickness设置无效,线条粗细无变化
问题:Path设置StrokeThickness后线条粗细始终不变
我绘制了一个指向下方的简单Path三角形,预期效果如图所示。但无论设置多大的StrokeThickness值(例如设为200),屏幕上的三角形线条粗细始终不变。以下是相关XAML代码及PathGeometry资源:
Path代码
<Path Grid.Row="0" HorizontalAlignment="Right" VerticalAlignment="Top" Width="30" Height="30" Stretch="Uniform" StrokeThickness="200" Data="{StaticResource ReplicaSurfacePathGeometry}" Fill="White" />
PathGeometry资源
<PathGeometry x:Key="ReplicaSurfacePathGeometry" FillRule="NonZero"> <PathGeometry.Figures> m 600 1034.3 -501.52 -868.68 h1003 z m 0 -120 397.6 -688.69 h-795.2 z </PathGeometry.Figures> </PathGeometry>
通过实时可视化树调试时,Path的StrokeThickness属性值确实为200,但线条仍保持纤细,请问我忽略了什么?
解决方案
核心问题:未设置Stroke属性
Path的StrokeThickness是控制描边线条粗细的属性,但WPF只有在指定了Stroke(描边颜色)的情况下,才会渲染描边效果。你当前只设置了Fill="White",没有给Stroke赋值,所以不管StrokeThickness设多大,都看不到描边。次要问题:路径坐标过大导致缩放异常
你的PathGeometry使用了非常大的坐标值(比如600、1034.3),但Path的Width和Height仅为30,加上Stretch="Uniform"会把整个图形缩放到极小的尺寸里。就算后续添加了Stroke,200的StrokeThickness经过缩放后也会完全超出可视范围,或者变得异常纤细。
修正后的代码示例
调整后的Path代码
<Path Grid.Row="0" HorizontalAlignment="Right" VerticalAlignment="Top" Width="30" Height="30" Stretch="Uniform" StrokeThickness="2" <!-- 先设置较小值测试效果 --> Stroke="Black" <!-- 新增Stroke属性,指定描边颜色 --> Data="{StaticResource ReplicaSurfacePathGeometry}" Fill="White" />
优化后的PathGeometry(小尺寸坐标)
<PathGeometry x:Key="ReplicaSurfacePathGeometry" FillRule="NonZero"> <PathGeometry.Figures> <!-- 改为以0,0为起点的小尺寸三角形,避免缩放失真 --> m 0 20 l 10 -20 l 10 20 z m 0 -25 l 8 -15 l -16 0 z </PathGeometry.Figures> </PathGeometry>
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

