Я пытаюсь разработать программу 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](https://i.stack.imgur.com/huP32.png)
Я получаю очень странные результаты, такие как:
![enter image description here](https://i.stack.imgur.com/5FVuw.png)
Здесь вы можете найти .xaml:
Код конструкции
Должен ли я сделать это по-другому? Есть идеи? Спасибо.