WPF - Создание параболы в квадрате с использованием анимации - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь разработать программу WPF для рисования параболы с использованием анимации. Я даже еще не начал с анимации, но мне не удается правильно нарисовать параболу с помощью линий.

Я создал сетку в главном окне, и в основном проблема заключается в том, что мне не удается правильно отобразить линии при их создании.

protected double midaCanva;
    protected int numCantonades;
    protected bool isTopLeft;
    protected bool isTopRight;
    protected bool isBottomLeft;
    protected bool isBottomRight;
    protected bool isHalf;
    protected double lineQty;
    protected bool isAllLines;
    protected int lineTime;
    protected Brush lineColor;
    private List<Shape> llistaLinies;       

    public MainWindow()
    {
        InitializeComponent();
        midaCanva = cnv_dibuix.Height;
        lineQty = (double)iud_linies.Value;
        llistaLinies = new List<Shape>();
        CrearLinies(lineQty, midaCanva);
        Dibuixar(llistaLinies);

        //lineColor = clr_linies.SelectedColor;
    }        

    private List<Shape> CrearLinies(double numeroLinies, double midaCanvas)
    {
        llistaLinies = new List<Shape>();
        double divisions = midaCanva / lineQty;
        double divisio = 0;

        for (int i = 0; i < lineQty; i++)
        {
            Line linia = new Line();
            linia.Stroke = Brushes.Black;
            linia.X1 = 0;                
            linia.Y1 = midaCanvas - divisio;
            linia.X2 = divisio + divisions;
            linia.Y2 = 0;
            linia.HorizontalAlignment = HorizontalAlignment.Left;
            linia.VerticalAlignment = VerticalAlignment.Center;
            linia.StrokeThickness = 1;
            llistaLinies.Add(linia);
            divisio += divisions;
        }
        return llistaLinies;
    }

    private void Dibuixar(List<Shape> linies)
    {
        cnv_dibuix.Children.Clear();

        for (int i = 0; i < lineQty; i++)
        {
            Line linia = (Line)linies[i];
            linia.Stretch = Stretch.Fill;
            Canvas.SetLeft(linia, 0);
            Canvas.SetBottom(linia, 0);
            cnv_dibuix.Children.Add(linia);
        }
    }

Часть, в которой я устанавливаю линии X1, X2, Y1, Y2, должна быть неправильной. Это должно выглядеть так:

enter image description here

Я получаю очень странные результаты, такие как:

enter image description here

Здесь вы можете найти .xaml:

Код конструкции

Должен ли я сделать это по-другому? Есть идеи? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...