/// <summary> /// 图形的内缩小 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ElasticityTestBtn_Click(object sender, RoutedEventArgs e) { List <Geometry2D> gss = this.drawingKernel.GeometryShapes; List <Line2D> lines = new List <Line2D>(); foreach (var g in gss) { if (g is DrawingKernel.Geometries.Primitives.LineGeometry) { DrawingKernel.Geometries.Primitives.LineGeometry line = g as DrawingKernel.Geometries.Primitives.LineGeometry; lines.Add(Line2D.Create(line.Start, line.End)); } if (g.GeometryId == "tp") { this.drawingKernel.RemoveGeometryShape(g); } } //查找封闭区域 List <List <Line2D> > nn = GraphicAlgorithm.ClosedLookup(lines, true, true); if (nn != null && nn.Count > 0) { List <Line2D> nt = nn[0]; List <Line2D> wtn = GraphicAlgorithm.Elastic(nt, -20); PolygonGeometry pg = new PolygonGeometry(); wtn.ForEach(y => { pg.PPoints.Add(y.Start); }); pg.FillColor = KernelProperty.GetRandomColor(); pg.GeometryId = "tp"; this.drawingKernel.AddShape(pg); } }