Как в WPF рисовать графики и вывести их в документ?

1009
17 февраля 2017, 00:56

Здравствуйте.

Требуется сделать десктопное приложение на WPF, делающая расчёты математические, рисующая графики и выплёвывающая отчёт по заданному шаблону. С первым и третьим проблем особо нет.

Проблема только в рисовании графиков функции и как эти графики запихнуть в шаблон (.docx, .pdf).

Есть какие-нибудь библиотеки, статье, встроенные инструменты для .NET/WPF? В Web намного проще было. Не приложу ума, как это сделать.

UPD:

Answer 1

Пока ответ больше подходит для комментария, но туда не подходит по объему...

Можно использовать OxyPlot для построения графика. Пример который набросал за пару минут

XAML

<Grid>
    <oxy:Plot Title="Заголовок">
        <oxy:Plot.Series>
            <oxy:LineSeries Title=""
                            ItemsSource="{Binding TestPoints}"
                            Color="Black" />
        </oxy:Plot.Series>
        <oxy:Plot.Axes>
            <oxy:LinearAxis Title="Rx"
                            MajorGridlineStyle="Dash"
                            Position="Bottom" />
            <oxy:LinearAxis Title="Rz"
                            MajorGridlineStyle="Dash"
                            Position="Left" />
        </oxy:Plot.Axes>
    </oxy:Plot>
</Grid>

.cs

public partial class MainWindow : Window
{
    public static string path = "D://testData.txt";
    public DataPoint[] TestPoints { get; }
        = DataLoader.loadData(path)
           .Select(x => new DataPoint(x.Rx, x.Rz))
           .ToArray();
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = this;
    }
}
public class DataLoader
{
    public static IEnumerable<Data> loadData(string path)
    {
        return
            File.ReadLines(path)
            .Select(x => x.Split(new[] { ';' }))
            .Select(x => new Data
            {
                Rx = double.Parse(x[1], CultureInfo.InvariantCulture),
                Rz = double.Parse(x[0], CultureInfo.InvariantCulture)
            });
    }
}
public class Data
{
    public double Rx { get; set; }
    public double Rz { get; set; }
}

Выглядеть это все будет так

READ ALSO
Обработка событий в WinForm C#

Обработка событий в WinForm C#

Есть следующая проблема, на форме расположен компонент, форма создана без элементов управления и обработка перемещения формы по рабочему...

554
Есть ли способ делать не такие громозкие события?

Есть ли способ делать не такие громозкие события?

Реализация в модели (в паттерне MVVM), каждой публичной переменной так:

479
Разница get; set;

Разница get; set;

Не совсем понял разницу между

327
Сборка dll из il кода

Сборка dll из il кода

Доброго времени суток! У меня есть dll написанная на C#Я дизассемблировал исходники этой dll с помощью ildasm

316