增加StrokeThickness但保持Path的尺寸

时间:2012-05-15 04:52:10

标签: wpf silverlight xaml geometry

我有一个Path通常具有1的StrokeThickness。在某些情况下,它需要具有10的StrokeThickness。当我增加笔划粗细时,我不希望该路径采取任何额外的空间。

默认情况下,仅增加StrokeThickness会增加路径的渲染大小。所以你得到这样的东西(蓝色轮廓延伸到黑色边界之外):

Stroke expands beyond original boundary of path

这就是我想要实现的目标(蓝色轮廓保持在黑色边界内):

Stroke is entirely inside original boundary of path

我可以想出两种数学方法来补偿增加的StrokeWidth:

  1. 手动调整三角形的点。
  2. 在路径的几何图形上使用ScaleTransform。
  3. 这些都有些问题/复杂。有更简单的方法吗?

2 个答案:

答案 0 :(得分:24)

您可以按照自己的几何图形剪切路径:

<Path ... Clip="{Binding Data, RelativeSource={RelativeSource Self}}"/>

但是你需要加倍StrokeThickness,因为只有一半的笔画是可见的。

答案 1 :(得分:0)

我一时兴起在我的Rectangle上设置了 StrokeThickness = -1 ,它完全符合我的要求:笔划在矩形的里面而不是在外面。