(C# приложение для WPF)Draw графики - показать только отдельные точки
У меня есть проблема, и я должен «сделать» систему координат и ввести только координаты (без линий), как показано в картина.
Я хотел бы использовать библиотеку, потому что я должен сделать кадр, и я думал, что с библиотекой было бы легко. Итак, я обнаружил GnuPlot, Oxyplot и нарисую себя. GnuPlot, к сожалению, глуп, поскольку у него нет библиотеки для приложения C#. (Или, если у вас есть, пожалуйста, дайте мне знать). Поэтому я использовал OxyPlot, но, к сожалению, OxyPlot показывает мне только систему координат. Теперь на мой вопрос. Есть ли что-нибудь лучшее для рисования систем координат с координатами? Он должен отвечать следующим требованиям:
- Он должен быть предварительный просмотр приложения, то есть, если я изменю размер это должно происходить непосредственно
- Я хотел бы сделать кадр, так что это должно помочь мне в процесс
- должен быть библиотекой
- она должна быть для C# приложения
- Я хотел бы быть первой точки метки для X, координаты Y, но позже она должна быть окружности с диаметром окружности
- позже как Bitmap
Как уже упоминалось выше, я использовал его с OxyPlot, но, к сожалению, он не рисует график (я использовал документацию образца)
Может быть, у вас есть лучшие идеи/решение для OxyPlot.
Спасибо заранее, и я рад каждому ответу.
XAML:
<Window x:Class="TestOxyPlot.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:oxy="http://oxyplot.org/wpf"
xmlns:local="clr-namespace:TestOxyPlot"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<oxy:Plot x:Name="oxyPlot" Title="{Binding Title}" Margin="207,53,0,0">
<oxy:Plot.Series>
<oxy:LineSeries ItemsSource="{Binding Points}"/>
</oxy:Plot.Series>
</oxy:Plot>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="44,64,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" MouseLeave="textBox_MouseLeave" TextChanged="textBox_TextChanged"/>
<TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="44,101,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" TextChanged="textBox1_TextChanged"/>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="68,174,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>
</Grid>
</Window>
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 OxyPlot;
namespace TestOxyPlot
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Title = "Example 2";
this.Points = new List<DataPoint>
{
new DataPoint(0, 4),
new DataPoint(10, 13),
new DataPoint(20, 15),
new DataPoint(30, 16),
new DataPoint(40, 12),
new DataPoint(50, 12)
};
}
public string Title { get; private set; }
public IList<DataPoint> Points { get; private set; }
private void textBox_MouseLeave(object sender, MouseEventArgs e)
{
}
private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
oxyPlot.Width = Int32.Parse(textBox.Text);
}
catch (Exception error)
{
MessageBox.Show("Message: " + error);
}
}
private void button_Click(object sender, RoutedEventArgs e)
{
}
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
oxyPlot.Width = Int32.Parse(textBox.Text);
}
catch (Exception error)
{
MessageBox.Show("Message: " + error);
}
}
}
}
Прежде всего, большое спасибо! Это сработало, но, к сожалению, я хотел вставить код в кнопку, когда я нажимаю на кнопку, сначала появляются координаты +. Но что-то не так. Вы видите ошибку? Вот ссылка на код: https://gist.github.com/anonymous/42525209b6eec77d1aea5006f443eea3 – GabelUndMesser
Сброс LineSeries ItemsSource после добавления данных. Я предоставляю свой рабочий пример. – Ron
Благодарим вас за отличную поддержку. Надеюсь, ты задаешь другой вопрос. Я хотел бы сделать запас в системе координат. Как это получить? Я попробовал его с «Маржиной», к сожалению, без успеха. Чтобы координаты не были непосредственно на краю, но имели определенное расстояние. ' ' –
GabelUndMesser