public override void OnMouseDown(int x, int y, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left)
     {
         n++;
         if (n == 1)
         {
             SharpMap.Geometries.Point P0 = new SharpMap.Geometries.Point(x, y);
             SharpMap.Geometries.Point P1 = new SharpMap.Geometries.Point(x, y);
             SharpMap.Geometries.Point P2 = new SharpMap.Geometries.Point(x, y);
             vertices.Add(P0);
             vertices.Add(P1);
             vertices.Add(P2);
             line = new LinearRing(vertices);
         }
         else if (n == 2)
         {
             vertices[1] = new SharpMap.Geometries.Point(x, y);
             PointF p1 = new PointF((float)vertices[0].X, (float)vertices[0].Y);
             PointF p2 = new PointF(x, y);
             mScreenDisplay.DrawPolyline(Pens.Blue, p1, p2);
             //n = 0;
         }
         else if (n == 3)
         {
             vertices[2]          = new SharpMap.Geometries.Point(x, y);
             polygon.ExteriorRing = line;
             if (line != null)
             {
                 SolidBrush brush = new SolidBrush(Color.Blue);
                 Pen        pen   = new Pen(brush);
                 //  mScreenDisplay.DrawPolygon(polygon, brush, pen, false);
                 mScreenDisplay.NewObject = polygon;
             }
         }
         else
         {
             SharpMap.Geometries.Point P4 = new SharpMap.Geometries.Point(x, y);
             vertices.Add(P4);
             SolidBrush brush = new SolidBrush(Color.Blue);
             Pen        pen   = new Pen(brush);
             //    mScreenDisplay.DrawPolygon(polygon, brush, pen, false);
             mScreenDisplay.NewObject = polygon;
         }
         mMapCtrl.Refresh();
     }
     else if (e.Button == MouseButtons.Right)
     {
         mMapCtrl.Refresh();
         vertices    = new List <SharpMap.Geometries.Point>();
         polygon     = new Polygon();
         tempPolygon = new Polygon();
         n           = 0;
     }
 }
示例#2
0
        public override void OnMouseMove(int x, int y)
        {
            if (n < 1)
            {
            }
            else
            {
                double    xmin           = line.Envelop.Left;
                double    ymin           = line.Envelop.Lower;
                double    w              = line.Envelop.Width;
                double    h              = line.Envelop.Height;
                Rectangle invalidaterect = new Rectangle((int)xmin, (int)ymin, (int)w, (int)h);
                invalidaterect.Inflate(2, 2);

                (mScreenDisplay as ScreenDisplayOld).RepaintStatic(invalidaterect);
                PointF p1 = new PointF((float)line.P0.X, (float)line.P0.Y);
                PointF p2 = new PointF(x, y);

                mScreenDisplay.DrawPolyline(Pens.Blue, p1, p2);
                line.P1 = new RPoint(x, y, 0);
            }
        }
示例#3
0
 public override void Draw(IScreenDisplayOld display)
 {
     if (ShapeType == 0)
     {
         for (int i = 0; i < mGeometries.Count; i++)
         {
             RPoint pt = mGeometries[i] as RPoint;
             if (pt != null)
             {
                 display.DrawPoint(new Pen(Color.Red), pt);
             }
         }
     }
     if (ShapeType == 1)
     {
         for (int i = 0; i < mGeometries.Count; i++)
         {
             RPolyline pt = mGeometries[i] as RPolyline;
             if (pt != null)
             {
                 display.DrawPolyline(new Pen(Color.Red), pt);
             }
         }
     }
     if (ShapeType == 2)
     {
         for (int i = 0; i < mGeometries.Count; i++)
         {
             RPolygon pt = mGeometries[i] as RPolygon;
             if (pt != null)
             {
                 display.DrawPolygon(new Pen(Color.Red), pt);
             }
         }
     }
 }