Exemplo n.º 1
0
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.SmoothingMode = m_smoothingMode;
            if (mScreenDisplay.IsCacheDirty)
            {
                mScreenDisplay.StartRecording();
                mScreenDisplay.StartDrawing(e.Graphics, 0);
                mMap.Draw(mScreenDisplay);
                object newObj = mScreenDisplay.NewObject;
                if (newObj != null)
                {
                    IScreenDisplayDraw drawNew = mScreenDisplay as IScreenDisplayDraw;
                    if (newObj is LineString)
                    {
                        Pen mpen = new Pen(Color.Blue);
                        drawNew.DrawLineString(newObj as LineString, mpen);
                    }
                    else if (newObj is MultiLineString)
                    {
                        Pen mpen = new Pen(Color.Blue);
                        drawNew.DrawMultiLineString(newObj as MultiLineString, mpen);
                    }
                    else if (newObj is Polygon)
                    {
                        Brush brush = new SolidBrush(Color.Blue);
                        drawNew.DrawPolygon(newObj as Polygon, brush, Pens.AliceBlue, false);
                    }
                }

                mScreenDisplay.FinishDrawing();
                mScreenDisplay.StopRecording();
            }
        }
Exemplo n.º 2
0
        public override void Draw(IScreenDisplay display)
        {
            IScreenDisplayDraw displayDraw = display as IScreenDisplayDraw;

            if (ShapeType == RgEnumShapeType.RgPoint)
            {
                for (int i = 0; i < mGeometries.Count; i++)
                {
                    RGeos.Geometries.Point pt = mGeometries[i] as RGeos.Geometries.Point;
                    if (pt != null)
                    {
                        displayDraw.DrawPoint(pt, new Pen(Color.Red));
                    }
                }
            }
            if (ShapeType == RgEnumShapeType.RgLineString)
            {
                for (int i = 0; i < mGeometries.Count; i++)
                {
                    LineString pt = mGeometries[i] as LineString;
                    if (pt != null)
                    {
                        displayDraw.DrawLineString(pt, new Pen(Color.Red));
                        // display as r
                    }
                }
            }
            if (ShapeType == RgEnumShapeType.RgMultiLineString)
            {
                for (int i = 0; i < mGeometries.Count; i++)
                {
                    MultiLineString pt = mGeometries[i] as MultiLineString;
                    if (pt != null)
                    {
                        displayDraw.DrawMultiLineString(pt, new Pen(Color.Red));
                    }
                }
            }
            if (ShapeType == RgEnumShapeType.RgPolygon)
            {
                for (int i = 0; i < mGeometries.Count; i++)
                {
                    Polygon pt = mGeometries[i] as Polygon;
                    if (pt != null)
                    {
                        Pen   mPen  = new Pen(Color.Red);
                        Brush brush = new SolidBrush(Color.Blue);
                        displayDraw.DrawPolygon(pt, brush, mPen, false);
                    }
                }
            }
        }
Exemplo n.º 3
0
        public override void OnMouseMove(int x, int y)
        {
            if (n == 1)
            {
            }
            if (n == 2)
            {
                j++;
                tmpVertices = new List <RGeos.Geometries.RgPoint>();
                RGeos.Geometries.RgPoint P0 = vertices[0];
                RGeos.Geometries.RgPoint P1 = vertices[1];
                RGeos.Geometries.RgPoint pt = mScreenDisplay.DisplayTransformation.ToUnit(new PointF(x, y));
                RGeos.Geometries.RgPoint P2 = pt;
                tmpVertices.Add(P0);
                tmpVertices.Add(P1);
                tmpVertices.Add(P2);
                LinearRing tmpLine = new LinearRing(tmpVertices);
                tempPolygon.ExteriorRing = tmpLine;

                if (j == 1)
                {
                    BoundingBox box            = tempPolygon.GetBoundingBox();
                    PointF      lowLeft        = mScreenDisplay.DisplayTransformation.ToScreen(box.TopLeft);
                    PointF      topRight       = mScreenDisplay.DisplayTransformation.ToScreen(box.BottomRight);
                    double      xmin           = lowLeft.X;
                    double      ymin           = lowLeft.Y;
                    double      w              = Math.Abs(topRight.X - lowLeft.X);
                    double      h              = Math.Abs(topRight.Y - lowLeft.Y);
                    Rectangle   invalidaterect = new Rectangle((int)xmin, (int)ymin, (int)w, (int)h);
                    invalidaterect.Inflate(2, 2);
                    (mScreenDisplay as ScreenDisplay).RepaintStatic(invalidaterect);
                    j = 0;
                }
                SolidBrush brush = new SolidBrush(Color.Blue);
                Pen        pen   = new Pen(brush);
                mScreenDisplay.StartDrawing(mMapCtrl.CreateGraphics(), 1);
                mScreenDisplayDraw.DrawPolygon(tempPolygon, brush, pen, false);
                mScreenDisplay.FinishDrawing();
            }
            else if (n > 2)
            {
                BoundingBox box            = tempPolygon.GetBoundingBox();
                PointF      lowLeft        = mScreenDisplay.DisplayTransformation.ToScreen(box.TopLeft);
                PointF      topRight       = mScreenDisplay.DisplayTransformation.ToScreen(box.BottomRight);
                double      xmin           = lowLeft.X;
                double      ymin           = lowLeft.Y;
                double      w              = Math.Abs(topRight.X - lowLeft.X);
                double      h              = Math.Abs(topRight.Y - lowLeft.Y);
                Rectangle   invalidaterect = new Rectangle((int)xmin, (int)ymin, (int)w, (int)h);
                invalidaterect.Inflate(2, 2);

                (mScreenDisplay as ScreenDisplay).RepaintStatic(invalidaterect);

                tmpVertices = new List <RGeos.Geometries.RgPoint>();
                RGeos.Geometries.RgPoint P0 = vertices[0];
                RGeos.Geometries.RgPoint P1 = vertices[n - 1];
                RGeos.Geometries.RgPoint pt = mScreenDisplay.DisplayTransformation.ToUnit(new PointF(x, y));
                RGeos.Geometries.RgPoint P2 = pt;
                tmpVertices.Add(P0);
                tmpVertices.Add(P1);
                tmpVertices.Add(P2);
                LinearRing tmpLine = new LinearRing(tmpVertices);
                tempPolygon.ExteriorRing = tmpLine;
                SolidBrush brush  = new SolidBrush(Color.Blue);
                SolidBrush brush2 = new SolidBrush(Color.Pink);
                Pen        pen    = new Pen(brush2);
                mScreenDisplay.StartDrawing(mMapCtrl.CreateGraphics(), 1);
                mScreenDisplayDraw.DrawPolygon(tempPolygon, brush, pen, false);
                mScreenDisplay.FinishDrawing();
            }
        }
Exemplo n.º 4
0
        public override void Draw(IScreenDisplay display)
        {
            IScreenDisplayDraw displayDraw = display as IScreenDisplayDraw;

            if (ShapeType == RgEnumShapeType.RgPoint)
            {
                for (int i = 0; i < mGeometries.Count; i++)
                {
                    Feature feat = mGeometries[i];
                    RGeos.Geometries.RgPoint pt = feat.Shape as RGeos.Geometries.RgPoint;
                    if (pt != null)
                    {
                        if (feat.IsSelected == false)
                        {
                            displayDraw.DrawPoint(pt, new Pen(Color.Red), new SolidBrush(Color.Red));
                        }
                        else
                        {
                            displayDraw.DrawPoint(pt, new Pen(Color.LightBlue), new SolidBrush(Color.LightBlue));
                        }
                    }
                }
            }
            if (ShapeType == RgEnumShapeType.RgLineString)
            {
                for (int i = 0; i < mGeometries.Count; i++)
                {
                    Feature    feat = mGeometries[i];
                    LineString pt   = feat.Shape as LineString;
                    if (pt != null)
                    {
                        if (feat.IsSelected == false)
                        {
                            displayDraw.DrawLineString(pt, new Pen(Color.Red));
                        }
                        else
                        {
                            displayDraw.DrawLineString(pt, new Pen(Color.LightBlue));
                        }
                        // display as r
                    }
                }
            }
            if (ShapeType == RgEnumShapeType.RgMultiLineString)
            {
                for (int i = 0; i < mGeometries.Count; i++)
                {
                    Feature         feat = mGeometries[i];
                    MultiLineString pt   = feat.Shape as MultiLineString;
                    if (pt != null)
                    {
                        if (feat.IsSelected == false)
                        {
                            displayDraw.DrawMultiLineString(pt, new Pen(Color.Red));
                        }
                        else
                        {
                            displayDraw.DrawMultiLineString(pt, new Pen(Color.LightBlue));
                        }
                    }
                }
            }
            if (ShapeType == RgEnumShapeType.RgPolygon)
            {
                for (int i = 0; i < mGeometries.Count; i++)
                {
                    Feature feat    = mGeometries[i];
                    Polygon polygon = feat.Shape as Polygon;
                    if (polygon != null)
                    {
                        Pen   mPen  = new Pen(Color.Red);
                        Brush brush = new SolidBrush(Color.Blue);
                        if (feat.IsSelected == false)
                        {
                            displayDraw.DrawPolygon(polygon, brush, mPen, false);
                        }
                        else
                        {
                            displayDraw.DrawPolygon(polygon, brush, new Pen(Color.LightBlue), false);
                        }
                    }
                }
            }
        }