Как нарисовать на границе прямую линию, разделив ее на 2 половины - PullRequest
0 голосов
/ 26 июня 2019

У меня есть граница в приложении wpf.

  1. Как нарисовать на границе прямую линию, разделяющую ее на две половины?
  2. У меня есть обработчик для нажатия награницы.Как после MouseDown нарисовать черную точку в точке нажатия (pY, pX)?А как после второго нажатия стереть старый и нарисовать новый?

1 Ответ

0 голосов
/ 26 июня 2019

Для рисования линии, чтобы разделить границу, вы можете использовать Line или Polyline следующим образом:

(вам нужно найти высоту и вес границы, чтобы получить половину балла, предположим, что это 200 300)

public MainWindow()
        {
            InitializeComponent();
            canvas.Children.Clear();
            Point[] points = new Point[2]
            {
            new Point(0,  100),
            new Point(300 , 100)
            };
            DrawLine(points);

        }

private void DrawLine(Point[] points)
        {
            Polyline line = new Polyline();
            PointCollection collection = new PointCollection();
            foreach (Point p in points)
            {
                collection.Add(p);
            }
            line.Points = collection;
            line.Stroke = new SolidColorBrush(Colors.Red);
            line.StrokeThickness = 1;
            canvas.Children.Add(line);
        }

для рисования точки вы можете использовать Ellipse, а также e.GetPosition(), чтобы получить возможность щелчка мышью:

private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    \\ Remove the last object from the canvas
     if(Canvas.Children.Count>0)
    canvas.Children.RemoveAt(canvas.Children.Count-1);

    Ellipse ellipse = new Ellipse();
    ellipse.Fill = Brushes.Sienna;
    ellipse.Width = 10;
    ellipse.Height = 10;
    ellipse.StrokeThickness = 2;

    canvas.Children.Add(ellipse);

    \\Set the position of the point.
    Canvas.SetLeft(ellipse, e.GetPosition(canvas).X);
    Canvas.SetTop(ellipse, e.GetPosition(canvas).Y);
}
...