2011-04-04 191 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