添加项目文件。
This commit is contained in:
106
MetroGauges/Controls/BlockShaps/BlockLine.cs
Normal file
106
MetroGauges/Controls/BlockShaps/BlockLine.cs
Normal file
@@ -0,0 +1,106 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Shapes;
|
||||
using netDxf;
|
||||
using netDxf.Tables;
|
||||
|
||||
namespace MetroGauges.Controls
|
||||
{
|
||||
public class BlockLine : BaseShap
|
||||
{
|
||||
|
||||
|
||||
public BlockLine(FrameworkElement shap) : base(shap)
|
||||
{
|
||||
}
|
||||
|
||||
public override void CopyBlock()
|
||||
{
|
||||
Line line = shapeitem as Line;
|
||||
shapeitem.Tag = new Line() { X1 = line.X1, Y1 = line.Y1, X2 = line.X2, Y2 = line.Y2 }; //存储当前图形坐标
|
||||
|
||||
ShapDataContext shapDataContext = line.DataContext as ShapDataContext;
|
||||
shapDataContext.OringLocation = new Line() { X1 = line.X1 / shapDataContext.ShapScaleRate, Y1 = line.Y1 / shapDataContext.ShapScaleRate, X2 = line.X2 / shapDataContext.ShapScaleRate, Y2 = line.Y2 / shapDataContext.ShapScaleRate } ;
|
||||
|
||||
}
|
||||
|
||||
public override FrameworkElement DirectionShap(Point dirPoint)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void DrawDxfBlocks(DxfDocument dxf, Layer layer)
|
||||
{
|
||||
Line line = shapeitem as Line;
|
||||
netDxf.Entities.Line dline = new netDxf.Entities.Line(new Vector2(line.X1 * m_ScaleRale, -line.Y1 * m_ScaleRale), new Vector2(line.X2 * m_ScaleRale, -line.Y2 * m_ScaleRale));
|
||||
dline.Layer = layer;
|
||||
dxf.AddEntity(dline);
|
||||
}
|
||||
|
||||
public override List<Point> GetPoints()
|
||||
{
|
||||
List<Point> points = new List<Point>();
|
||||
|
||||
Line line = shapeitem as Line;
|
||||
|
||||
points.Add(new Point() { X = line.X1, Y = line.Y1 });
|
||||
points.Add(new Point() { X = line.X2, Y = line.Y2 });
|
||||
|
||||
return points;
|
||||
}
|
||||
|
||||
public override void MoveBlock( Point currentPoint, System.Windows.Point dragPoint)
|
||||
{
|
||||
double moveX = currentPoint.X - dragPoint.X;
|
||||
double moveY = currentPoint.Y - dragPoint.Y;
|
||||
|
||||
Line line = shapeitem.Tag as Line;
|
||||
|
||||
|
||||
if ((shapeitem.DataContext as ShapDataContext).IsDirection)
|
||||
{
|
||||
(shapeitem as Line).X1 = line.X1 - moveX;
|
||||
(shapeitem as Line).X2 = line.X2 - moveX;
|
||||
}
|
||||
else
|
||||
{
|
||||
(shapeitem as Line).X1 = line.X1 + moveX;
|
||||
(shapeitem as Line).X2 = line.X2 + moveX;
|
||||
}
|
||||
|
||||
|
||||
|
||||
(shapeitem as Line).Y1 = line.Y1 + moveY;
|
||||
(shapeitem as Line).Y2 = line.Y2 + moveY;
|
||||
}
|
||||
|
||||
public override void MoveByX(double x)
|
||||
{
|
||||
Line line = shapeitem.Tag as Line;
|
||||
(shapeitem as Line).X1 = line.X1 + x/ m_ScaleRale;
|
||||
(shapeitem as Line).X2 = line.X2 + x/ m_ScaleRale;
|
||||
}
|
||||
|
||||
public override void MoveByY(double y)
|
||||
{
|
||||
Line line = shapeitem.Tag as Line;
|
||||
|
||||
(shapeitem as Line).Y1 = line.Y1 - y/ m_ScaleRale;
|
||||
(shapeitem as Line).Y2 = line.Y2 - y/ m_ScaleRale;
|
||||
}
|
||||
|
||||
public override void ScaleBlock(double rate)
|
||||
{
|
||||
(shapeitem.DataContext as ShapDataContext).ShapScaleRate = rate;
|
||||
Line line = (shapeitem.DataContext as ShapDataContext).OringLocation as Line; //shapeitem.Tag as Line;
|
||||
(shapeitem as Line).X1 = line.X1 * rate;
|
||||
(shapeitem as Line).X2 = line.X2 * rate;
|
||||
(shapeitem as Line).Y1 = line.Y1 * rate;
|
||||
(shapeitem as Line).Y2 = line.Y2 * rate;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user