using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; using System.Windows.Shapes; using netDxf; using netDxf.Tables; namespace MetroGauges.Controls { public class BlockCircle : BaseShap { public BlockCircle(FrameworkElement shap) : base(shap) { } public override void CopyBlock() { } public override FrameworkElement DirectionShap(Point dirPoint) { throw new NotImplementedException(); } public override void DrawDxfBlocks(DxfDocument dxf, Layer layer) { Path path = shapeitem as Path; EllipseGeometry ellipseGeometry = path.Data as EllipseGeometry; Point p1 = (Point)path.DataContext; Vector3 center = new Vector3(); center.X = p1.X * m_ScaleRale; center.Y = p1.Y * m_ScaleRale; netDxf.Entities.Circle circle = new netDxf.Entities.Circle(center, ellipseGeometry.RadiusX * m_ScaleRale); circle.Layer = layer; dxf.AddEntity(circle); } public override List GetPoints() { List points = new List(); Path path = shapeitem as Path; EllipseGeometry ellipseGeometry = path.Data as EllipseGeometry; Point p0 = (Point)path.DataContext; Point p1 = new Point() { X = p0.X + ellipseGeometry.RadiusX, Y = p0.Y }; Point p2 = new Point() { X = p0.X - ellipseGeometry.RadiusX, Y = p0.Y }; Point p3 = new Point() { X = p0.X , Y = p0.Y + ellipseGeometry.RadiusY }; Point p4 = new Point() { X = p0.X , Y = p0.Y - ellipseGeometry.RadiusY }; points.Add(p1); points.Add(p2); points.Add(p3); points.Add(p4); return points; } public override void MoveBlock(Point currentPoint, Point dragPoint) { //throw new NotImplementedException(); } public override void MoveByX(double x) { //throw new NotImplementedException(); } public override void MoveByY(double y) { //throw new NotImplementedException(); } public override void ScaleBlock(double rate) { //throw new NotImplementedException(); } } }