路径迷你语言(Silverlight / WPF)中PathFigure的等效IsFilled =“false”

时间:2011-02-17 22:16:43

标签: wpf silverlight path pathgeometry

我正在尝试找到在PathGeometry中使用的IsFilled="False"的等价物,但是对于Path Mini

left is Path Mini and right is PathGeometry

您可以看到下面的两条路径是相同的,但几何图形在第二条IsFilled="False"中的<PathGeometry>.<PathGeometry.Figures>.<PathFigure>除外。这是期望的行为,但我想将它用于Path Mini(即在第一个<Path>中)。我查看了文档并且似乎找不到任何内容,因为看起来Path Mini不是数字的集合。

据我了解,所有形状/几何都将在运行时转换为路径迷你,那么是否有一些方法可以反映编译的XAML以查看解释器如何使用PathGeometry将其转换为Path Mini?

<Canvas Background="#FDB" Width="800" Height="600">

  <!-- this is the LEFT-HAND Path in the picture above -->
  <Path Canvas.Left="100" Canvas.Top="100"
     Stroke="#385D8A" StrokeThickness="2" StrokeLineJoin="Round" Fill="#4F81BD"
     Data="M0,0L102,0L102,102L0,102Z M46.15,49.01L-73.36,130.99L-96.42,-96.12L109.35,355.18">
  </Path>

  <!-- this is the RIGHT-HAND Path in the picture above -->
  <Path Canvas.Left="300" Canvas.Top="100" Stroke="#385D8A" StrokeThickness="2" StrokeLineJoin="Round" Fill="#4F81BD">
    <Path.Data>
      <GeometryGroup>
        <PathGeometry>
          <PathGeometry.Figures>
            <PathFigure StartPoint="0,0" IsClosed="True">
              <PathFigure.Segments>
                <LineSegment Point="102,0" />
                <LineSegment Point="102,102" />
                <LineSegment Point="0,102" />
              </PathFigure.Segments>
            </PathFigure>
          </PathGeometry.Figures>
        </PathGeometry>
        <PathGeometry>
          <PathGeometry.Figures>
            <PathFigure IsFilled="False" StartPoint="46.15,49.01">
              <PathFigure.Segments>
                <LineSegment Point="-73.36,130.99" />
                <LineSegment Point="-96.42,-96.12" />
                <LineSegment Point="109.35,355.18" />
              </PathFigure.Segments>
            </PathFigure>
          </PathGeometry.Figures>
        </PathGeometry>
      </GeometryGroup>
    </Path.Data>
  </Path>
</Canvas>

1 个答案:

答案 0 :(得分:2)

路径迷你语言仅支持轮廓,因此笔划必须转换为填充。如果你想要一个像素宽的线条并且你对于缓和或端盖不太挑剔的话,这很容易做到。只需使用瘦小的矩形。使用最小点数和处理交叉点进行无限窄行程的真正数学“增长”是相当困难的。但是,您可能可以使用WPF渲染引擎为您执行此操作,因为显然它已经可以执行此操作。