0

Передо мной стоит задача написать приложение для построения графиков на Avalonia C# без использования пакетов NuGet, разработанных специально для построения графиков. Я понял, что нужно как-то использовать элемент управления Canvas и класс DrawingContext. Но неясно как создать объект класса DrawingContext и, что такое IDrawingContextImpl (этот интерфейс является параметром конструктора DrawingContext).

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            StackPanel s = this.FindControl<StackPanel>("StackPanel1");
            Button draw = s.FindControl<Button>("Button1");
            canvas1 = s.FindControl<Canvas>("Canvas1");
            draw.Click += Draw_Click;
            //drawingContext = new DrawingContext();
            canvas1.DataContext = drawingContext;
        }
    Canvas canvas1;
    DrawingContext drawingContext;

    private void Draw_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
    {
        //drawingContext.DrawEllipse();
    }
}

  • Графики бывают разные, по разному рисуются. К примеру вот, чем не график? А всего лишь состоит из ProgressBar (что не очень оптимально, но для таких минимальных решений, почему и нет? Ну и обратите внимание как тот код был написан, я не писал UI в коде, весь UI находиться в XAML, ну а вы вон уже с ходу, пытаетесь работать с UI через код, что зачастую вовсе не требуется. Ну а вот например как рисовать разные объекты, как видите, опять не рисую в C#, голый XAML, а данные в C# классе. – EvgeniyZ Jan 24 '24 at 03:14
  • В общем, мой вам совет, научитесь сначала работать грамотно с проектом, поймите как взаимодействовать с объектами правильно. Затем, определитесь какой именно тип графика вам нужен, проанализируйте его, поймите из чего состоит, ну а затем уже пробуйте сделать поэтапно тоже самое програмно. И вот когда у вас будет ступор, вы не поймете как сделать конкретное действие (а не весь проект), тогда и задавайте вопрос. Так просто больше шансов что-то получить адекватное. Вот кстати еще пример, и тоже, голый XAML а данные в C#) – EvgeniyZ Jan 24 '24 at 03:17

0 Answers0