private void OnMouseDown(object sender, MouseButtonEventArgs e) { Point px = Mouse.GetPosition(this.canvas1); _pointList.Add(new VectorNode((int)px.X, (int)px.Y)); this.canvas1.Children.Clear(); foreach (var point in _pointList) { Point p = new Point(point.x, point.y); DrawPoint(p); } _voronoi.Rebuild(); //only draw voronoi if ok if (_showVoronoi) { var circles = _voronoi.GetNodes(); foreach (var ce in circles) { HalfEdge edge = ce.halfEdge; HalfEdge f = edge; while (edge != null) { var myLine = new Line(); myLine.Stroke = _brush; myLine.X1 = edge.Twin().GetTarget().X(); myLine.X2 = edge.GetTarget().X(); myLine.Y1 = edge.Twin().GetTarget().Y(); myLine.Y2 = edge.GetTarget().Y(); myLine.HorizontalAlignment = HorizontalAlignment.Left; myLine.VerticalAlignment = VerticalAlignment.Center; myLine.StrokeThickness = 1; this.canvas1.Children.Add(myLine); edge = edge.Next(); if (edge == null || f == edge) { break; } } } } if (_showDelaunay) { ShowDelaunayEdges(); } }
private void DrawWithoutRebuild() { this.canvas1.Children.Clear(); foreach (var point in _pointList) { Point p = new Point(point.x, point.y); DrawPoint(p); } //only draw voronoi if ok if (_showVoronoi) { var circles = _voronoi.GetNodes(); foreach (var ce in circles) { HalfEdge edge = ce.halfEdge; HalfEdge f = edge; while (edge != null) { var myLine = new Line(); myLine.Stroke = _brush; myLine.X1 = edge.Twin().GetTarget().X(); myLine.X2 = edge.GetTarget().X(); myLine.Y1 = edge.Twin().GetTarget().Y(); myLine.Y2 = edge.GetTarget().Y(); myLine.HorizontalAlignment = HorizontalAlignment.Left; myLine.VerticalAlignment = VerticalAlignment.Center; myLine.StrokeThickness = 1; this.canvas1.Children.Add(myLine); edge = edge.Next(); if (edge == null || f == edge) { break; } } } } if (_showDelaunay) { ShowDelaunayEdges(); } }