2016-06-15 3 views
-3

Я создал решение полилинии из учебника веб-сайта с использованием visual studio 2015 C#. https://msdn.microsoft.com/en-us/library/hh868034.aspxКак реализовать кубическую интерполяцию в визуальной студии

Файл XAML выглядит следующим образом:

<Window x:Class="WPFTestApplication.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF" 
Width="1024" Height="768"> 
<Grid x:Name="LayoutRoot" Background="White"> 
    <m:Map x:Name="myMap" CredentialsProvider="Insert_Your_Bing_Maps_Key" Center="47.740,-122.125" ZoomLevel="11"> 
     <m:MapPolyline Stroke="Blue" StrokeThickness="5" 
      Locations="47.6424,-122.3219 47.8424,-122.1747 47.5814,-122.1747 47.67856,-122.130994" 
      Opacity="0.7"/> 
    </m:Map> 
</Grid> 
</Window> 

Файл xaml.cs выглядит следующим образом:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 
using Microsoft.Maps.MapControl.WPF; 

using Microsoft.Maps.MapControl.WPF.Design; 


namespace WPFTestApplication 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 


       MapPolyline polyline = new MapPolyline(); 
       polyline.Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Blue); 
       polyline.StrokeThickness = 5; 
       polyline.Opacity = 0.7; 
       polygon.Locations = new LocationCollection() { 
    new Location(47.6424,-122.3219), 
    new Location(47.8424,-122.1747), 
    new Location(47.5814,-122.1747) 
    }; 


       myMap.Children.Add(polyline); 



     } 


    } 
} 

Вывод, отображается следующим образом:

долготе, точки широты связаны полилинией на карте. Полилиния - прямая линия.

Я хотел бы использовать кубическую/сплайн-интерполяцию для соединения долготы, точек широты, чтобы сформировать гладкую кривую. Можно ли реализовать кубическую/сплайн-интерполяцию в этом коде? Существуют ли встроенные функции?

Спасибо.

ответ

-1

Если вы хотите использовать что-то отличное от wpf, см. DrawCurves, что позволяет рисовать гладкие кривые.

Если вам нужны точки на сплайне для дальнейших вычислений или хотите придерживаться MapPolyline, быстрый взгляд через google, похоже, вызывает несколько проектов, таких как this. Сначала вам нужно рассчитать сплайн самостоятельно, а затем взять соответствующее количество точек и добавить их в свой объект полилинии (чтобы получить желаемую влажность) Класс, который вы используете (MapPolyline), больше меньше руды для рисования многоугольников, поэтому серия точек, связанных прямой (как вы переживаете).

Смежные вопросы