/*Draw Solid*/ public static void DrawSolid(Solid xPoly, Canvas mainCanvas) { System.Windows.Shapes.Polygon wPoly = new System.Windows.Shapes.Polygon(); wPoly.Points.Add(TypeConverter.Vertex2ToPoint(xPoly.FirstVertex, mainCanvas.Height)); wPoly.Points.Add(TypeConverter.Vertex2ToPoint(xPoly.SecondVertex, mainCanvas.Height)); wPoly.Points.Add(TypeConverter.Vertex2ToPoint(xPoly.FourthVertex, mainCanvas.Height)); wPoly.Points.Add(TypeConverter.Vertex2ToPoint(xPoly.ThirdVertex, mainCanvas.Height)); /*TypeConverter.Entity2Shape(xPoly,wPoly);*/ wPoly.Fill = DrawUtils.GetFillBrush(xPoly.getColor(), xPoly.Transparency.Value); mainCanvas.Children.Add(wPoly); }
/*Draw Line*/ public static void DrawLine(netDxf.Entities.Line xLine, Canvas mainCanvas) { double X1 = xLine.StartPoint.X; double Y1 = mainCanvas.Height - xLine.StartPoint.Y; double X2 = xLine.EndPoint.X; double Y2 = mainCanvas.Height - xLine.EndPoint.Y; getMaxPt(xLine.StartPoint); getMaxPt(xLine.EndPoint); System.Windows.Shapes.Line wLine = DrawUtils.GetLine(X1, Y1, X2, Y2); TypeConverter.Entity2Shape(xLine, wLine); mainCanvas.Children.Add(wLine); }
public static System.Windows.Media.Brush PatternToBrush(HatchPattern myPattern, AciColor myColor) { VisualBrush vBrush = new VisualBrush(); System.Windows.Media.Brush resBrush = vBrush; if (myPattern.Fill == netDxf.Entities.HatchFillType.PatternFill) { System.Windows.Shapes.Path path1 = new System.Windows.Shapes.Path(); path1.StrokeThickness = 1; path1.Stroke = AciColorToBrush(myColor); System.Windows.Point p0 = TypeConverter.Vertex2ToPoint(myPattern.LineDefinitions[0].Origin); double deltaY = myPattern.LineDefinitions[0].Delta.Y; if (myPattern.Name == "LINE") { System.Windows.Point p1 = p0; System.Windows.Point p2 = new System.Windows.Point(p1.X, p1.Y + 10); /*path1.Data=Geometry.Parse("M 5 0 L 5 10 Z");*/ path1.Data = DrawUtils.GetStreamGeoLine(p1, p2); } vBrush.TileMode = TileMode.Tile; vBrush.Viewport = new Rect(p0.X, p0.Y, deltaY, deltaY); vBrush.ViewportUnits = BrushMappingMode.Absolute; vBrush.Viewbox = new Rect(p0.X, p0.Y, 10, 10); vBrush.ViewboxUnits = BrushMappingMode.Absolute; vBrush.Visual = path1; vBrush.RelativeTransform = new RotateTransform(myPattern.Angle, 5, 5); resBrush = vBrush; } else if (myPattern.Fill == netDxf.Entities.HatchFillType.SolidFill) { if (myPattern.GetType() == typeof(HatchGradientPattern)) { resBrush = PatternSolidFillToBrush((HatchGradientPattern)myPattern, myColor); } } return(resBrush); }
/*Draw Mesh*/ public static void DrawMesh(Mesh xMesh, Canvas mainCanvas) { System.Windows.Shapes.Polygon wPoly = new System.Windows.Shapes.Polygon(); foreach (netDxf.Entities.MeshEdge xEdge in xMesh.Edges) { System.Windows.Point myPt1 = TypeConverter.Vertex3ToPoint(xMesh.Vertexes[xEdge.StartVertexIndex]); System.Windows.Point myPt2 = TypeConverter.Vertex3ToPoint(xMesh.Vertexes[xEdge.EndVertexIndex]); myPt1.Y = mainCanvas.Height - myPt1.Y; myPt2.Y = mainCanvas.Height - myPt2.Y; System.Windows.Shapes.Line wLine = DrawUtils.GetLine(myPt1.X, myPt1.Y, myPt2.X, myPt2.Y); TypeConverter.Entity2Shape(xMesh, wLine); mainCanvas.Children.Add(wLine); } }
/*Draw Underlay*/ public static void DrawUnderlay(Underlay xUnderlay, Canvas mainCanvas) { /*DrawUtils.DrawPoint(xUnderlay.Position, mainCanvas, Colors.Red, 10, 0.5);*/ DrawUtils.DrawText(xUnderlay.Definition.FileName, 10, TypeConverter.ToMediaColor(xUnderlay.getColor().ToColor()), xUnderlay.Position.X, xUnderlay.Position.Y + 20, mainCanvas); }