【问题标题】:How to draw parallel lines along a path in WPF如何在 WPF 中沿路径绘制平行线
【发布时间】:2023-03-05 10:32:01
【问题描述】:

我想在线条周围添加边框。我试图沿着现有的一条线(或任何其他方法)画两条线。去实现它。我试图画两条不同粗细的线。但我想要一个灵活的方法。

我也试过用画笔,但是旋转和缩放是个问题。

简单的代码如下所示。但我想知道是否有任何其他方便的方法可以为路径线添加边框。此外,该方法中线的起点和终点没有被“边框”包围。

<Path
    StrokeThickness="3"
    StrokeDashCap="Round"
    Stroke="Black"
    Data="{Binding PathGeometry}"
>
</Path>
<Path
    StrokeThickness="8"
    StrokeDashCap="Round"
    Stroke="{Binding Brush}"
    Data="{Binding PathGeometry}"
>
</Path>

它可能看起来像这样(我只需要三行):

【问题讨论】:

  • 代码代码代码。你在绘制代码中做了什么?
  • @ThomasAndreèLian 我添加了代码。但我想知道还有其他更好的方法吗?或者如何改进。谢谢。哦,还有,图片不是我的代码生成的。
  • 究竟什么是“灵活方法”或“便捷方法”?在粗线之上画细线是解决此问题的常用方法。
  • @Clemens 我可以用 Border 或 DrawingBrush 画这个吗?如果我只需要三行以上的路径(如图所示)怎么办?
  • 边框是矩形的,画笔必须与每个线段对齐(例如旋转)。如果您需要更多线条,请在彼此之上绘制更多线条。当然,这总是会导致奇数条可见线。

标签: c# wpf xaml path


【解决方案1】:
Vector vLine = ( p1 - p0 ).Normalized();
Vector vPerp = new Vector( -vLine.Y, vLine.X );
Point newp0 = p0 + vPerp * offset distance
Point newp1 = p1 + vPerp * offset distance
DrawLine( newp0, newp1 );

【讨论】:

    【解决方案2】:

    使用直线 y=mx+c 的方程

       private Point GetParellelPoint(Point point1,Point point2,double?X,double?Y)
        {
            double slope =( point1.Y- point2.Y ) / ( point1.X- point2.X ) ;
            if(!X.HasValue)
            {
                X = (Y.Value - point1.Y) / slop + point1.X;
            }
            if (!Y.HasValue)
            {
                Y = slop*(X.Value - point1.X)   + point1.Y;
            }
            return new Point(X.Value, Y.Value);
        }
    

    Point 1 和 point2 是现有线的两个点,然后根据您的需要提供 y 或 x

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 2021-09-09
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      相关资源
      最近更新 更多