2011-04-04 120 views
2

我正在开发一个小的Silverlight应用程序(使用siverlight 4和c#)。在我的应用程序中,我需要根据它们的X,Y绘制坐标。然后,我需要根据它们之间的连接在一些点之间画线。由于可以有多条线,并且我不能让它们全部相互交叉(因为它会把它变成一团糟),所以我需要用拱形画出一些线条。Silverlight - 如何绘制弧线?

那么,解决这个问题最好的办法是什么?

  • 创建我自己的x,y系统 - 在点中绘制线条的位置元素 - 如果是的话我如何绘制带有弧线的线条?
  • 使用提供类似功能的现成控件?如果是的话,什么控制?

谢谢!

附加是一个小图像来说明我的需要(我不是大画家,对不起)。

enter image description here

回答

2

看看绘制贝塞尔曲线(MSDN Link),了解不同的几何类型(MSDN Link

下面是一个代码示例,让你开始,将产生如下图: Bezier Curve Sample

<Canvas x:Name="LayoutRoot" Background="White"> 
     <Path Stroke="Blue" StrokeThickness="2" > 
      <Path.Data> 
       <PathGeometry> 
        <PathGeometry.Figures> 
         <PathFigureCollection> 
          <PathFigure StartPoint="50,50"> 
           <PathFigure.Segments> 
            <PathSegmentCollection> 
             <BezierSegment 
              Point1="50,20" 
              Point2="120,170" 
              Point3="350,150" 
             /> 
            </PathSegmentCollection> 
           </PathFigure.Segments> 
          </PathFigure> 
         </PathFigureCollection> 
        </PathGeometry.Figures> 
       </PathGeometry> 
      </Path.Data> 
     </Path> 
     <Path Fill="Gold" Stroke="Black" StrokeThickness="1"> 
      <Path.Data> 
       <EllipseGeometry Center="50,50" RadiusX="20" RadiusY="20" /> 
      </Path.Data> 
     </Path> 
     <Path Fill="Gold" Stroke="Black" StrokeThickness="1"> 
      <Path.Data> 
       <EllipseGeometry Center="350,150" RadiusX="20" RadiusY="20" /> 
      </Path.Data> 
     </Path> 
    </Canvas> 
+0

有没有办法用简单的“Line”类来做到这一点? – vondip 2011-04-05 02:56:09

+0

一条线只能是一条直线。您在这里没有太多选择。贝塞尔曲线绝对是你最好的,也是唯一的选择。 – 2011-04-05 03:08:02

+0

我明白了,你知道任何开源框架,它们很容易支持它们之间的定位点和绘图吗? – vondip 2011-04-05 03:13:50