public override void RotateClw() { base.RotateCounterClw(); rotateAngle = 90; Matrix matrix = new Matrix(); PointF ptCenter = new PointF(); PointF[] points = new PointF[8]; PointF[] pts = new PointF[4]; pts[0] = PointList[0]; pts[1] = PointList[3]; pts[2] = PointList[5]; pts[3] = PointList[7]; startAngle = (startAngle + 360) % 360; switch (startAngle) { case 0: directionOfCross = DirectionCross.first; ptCenter.X = ((float)(pts[0].X + pts[2].X)) / 2; ptCenter.Y = ((float)(pts[1].Y + pts[3].Y)) / 2; directionOfCross = DirectionCross.second; break; case 90: directionOfCross = DirectionCross.second; ptCenter.X = ((float)(pts[1].X + pts[3].X)) / 2; ptCenter.Y = ((float)(pts[0].Y + pts[2].Y)) / 2; directionOfCross = DirectionCross.third; break; case 180: directionOfCross = DirectionCross.third; ptCenter.X = ((float)(pts[0].X + pts[2].X)) / 2; ptCenter.Y = ((float)(pts[1].Y + pts[3].Y)) / 2; directionOfCross = DirectionCross.four; break; case 270: directionOfCross = DirectionCross.four; ptCenter.X = ((float)(pts[1].X + pts[3].X)) / 2; ptCenter.Y = ((float)(pts[0].Y + pts[2].Y)) / 2; directionOfCross = DirectionCross.first; break; default: break; } startAngle += rotateAngle; matrix.RotateAt(RotateAngle, ptCenter); for (int i = 0; i < 8; i++) { points[i] = PointList[i]; } matrix.TransformPoints(points); PointList.Clear(); for (int i = 0; i < 8; i++) { PointList.Add(Point.Ceiling(points[i])); } }
public CrossEle CreateEle(Point pt, Size size, Int16 multiFactor, string text) { Point[] pts = new Point[8]; DrawMultiFactor = multiFactor; objectCrossOp.DrawMultiFactor = DrawMultiFactor; pt.Offset(pt.X / DrawMultiFactor - pt.X, pt.Y / DrawMultiFactor - pt.Y); pts[0] = pt; pts[1].X = pts[0].X + firstPart; pts[1].Y = pts[0].Y; pts[2].X = pts[1].X; pts[2].Y = pts[0].Y + 5; pts[3].X = pts[0].X + firstPart + secPart; pts[3].Y = pts[2].Y; pts[4].X = pts[3].X; pts[4].Y = pts[0].Y; pts[5].X = pts[0].X + lenghtOfStrai; pts[5].Y = pts[0].Y; pts[6].X = pts[1].X; pts[6].Y = pts[0].Y - 5; pts[7].X = pts[3].X; pts[7].Y = pts[0].Y - 45; PointList.AddRange(pts); directionOfCross = DirectionCross.first; this.railText = text; return(this); }
public override void RotateCounterClw() { base.RotateCounterClw(); rotateAngle = -90; Matrix matrix = new Matrix(); PointF ptCenter = new PointF(); PointF[] points = new PointF[8]; PointF[] pts = new PointF[4]; pts[0] = PointList[0]; pts[1] = PointList[3]; pts[2] = PointList[5]; pts[3] = PointList[7]; startAngle = (startAngle + 360) % 360; switch (startAngle) { case 0: directionOfCross = DirectionCross.first; ptCenter.X = ((float)(pts[0].X + pts[2].X)) / 2; ptCenter.Y = ((float)(pts[1].Y + pts[3].Y)) / 2; directionOfCross = DirectionCross.four; break; case 90: directionOfCross = DirectionCross.second; ptCenter.X = ((float)(pts[1].X + pts[3].X)) / 2; ptCenter.Y = ((float)(pts[0].Y + pts[2].Y)) / 2; directionOfCross = DirectionCross.first; break; case 180: directionOfCross = DirectionCross.third; ptCenter.X = ((float)(pts[0].X + pts[2].X)) / 2; ptCenter.Y = ((float)(pts[1].Y + pts[3].Y)) / 2; directionOfCross = DirectionCross.second; break; case 270: directionOfCross = DirectionCross.four; ptCenter.X = ((float)(pts[1].X + pts[3].X)) / 2; ptCenter.Y = ((float)(pts[0].Y + pts[2].Y)) / 2; directionOfCross = DirectionCross.third; break; default: break; } startAngle += rotateAngle; matrix.RotateAt(rotateAngle, ptCenter); for (int i = 0; i < 8; i++) { points[i] = PointList[i]; } matrix.TransformPoints(points); PointList.Clear(); for (int i = 0; i < 8; i++) { PointList.Add(Point.Ceiling(points[i])); } }
public CrossEle CreateEle(Point pt, Size size, Int16 multiFactor, string text) { Point[] pts = new Point[8]; DrawMultiFactor = multiFactor; objectCrossOp.DrawMultiFactor = DrawMultiFactor; pt.Offset(pt.X / DrawMultiFactor - pt.X, pt.Y / DrawMultiFactor - pt.Y); pts[0] = pt; pts[1].X = pts[0].X + firstPart; pts[1].Y = pts[0].Y; pts[2].X = pts[1].X; pts[2].Y = pts[0].Y + 5; pts[3].X = pts[0].X + firstPart + secPart; pts[3].Y = pts[2].Y; pts[4].X = pts[3].X; pts[4].Y = pts[0].Y; pts[5].X = pts[0].X + lenghtOfStrai; pts[5].Y = pts[0].Y; pts[6].X = pts[1].X; pts[6].Y = pts[0].Y - 5; pts[7].X = pts[3].X; pts[7].Y = pts[0].Y - 45; PointList.AddRange(pts); directionOfCross = DirectionCross.first; this.railText = text; return this; }