Example #1
0
        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]));
            }
        }
Example #2
0
 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);
 }
Example #3
0
 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]));
     }
 }
Example #4
0
 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;
 }