示例#1
0
 public override void OnCreate(HookHelper hook)
 {
     Name               = "绘制多边形";
     mMapCtrl           = hook.MapControl as RgMapControl;
     mScreenDisplay     = mMapCtrl.ScreenDisplay;
     mScreenDisplayDraw = mScreenDisplay as IScreenDisplayDraw;
 }
示例#2
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();
            }
        }
示例#3
0
文件: Layer.cs 项目: liuxu4567/RGEOS
        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);
                    }
                }
            }
        }
示例#4
0
        public override void OnMouseDown(int x, int y, System.Windows.Forms.MouseEventArgs e)
        {
            RgPoint P1 = mScreenDisplay.DisplayTransformation.ToUnit(new System.Drawing.PointF(x, y));

            Graphics g = Graphics.FromHwnd(mMapCtrl.Handle);

            mScreenDisplay.StartDrawing(g, 1);
            IScreenDisplayDraw mScreenDisplayDraw = mScreenDisplay as IScreenDisplayDraw;

            mScreenDisplayDraw.DrawPoint(P1, new System.Drawing.Pen(System.Drawing.Color.Yellow), new System.Drawing.SolidBrush(System.Drawing.Color.Yellow));
            mScreenDisplay.FinishDrawing();
            g.Dispose();
            if (PickUpFinishedEventHandler != null)
            {
                PickUpFinishedEventHandler(P1);
            }
            //mMapCtrl.Refresh();
            mPickedPoint = P1;
        }
示例#5
0
        protected void DrawPoint(IScreenDisplay canvas, Pen pen, Brush fillBrush)
        {
            IScreenDisplayDraw canvasDraw = canvas as IScreenDisplayDraw;
            Graphics           dc         = Graphics.FromHwnd(canvas.Handle);

            PointF m_point1 = canvas.DisplayTransformation.ToScreen(m_snappoint);

            dc.DrawRectangle(pen, m_point1.X - 3, m_point1.Y - 3, 6, 6);
            Rectangle screenrect = new Rectangle((int)m_point1.X - 3, (int)m_point1.Y - 3, 6, 6);

            screenrect.X++;
            screenrect.Y++;
            screenrect.Width--;
            screenrect.Height--;
            if (fillBrush != null)
            {
                dc.FillRectangle(fillBrush, screenrect);
            }
            dc.Dispose();
            dc = null;
        }
示例#6
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);
                        }
                    }
                }
            }
        }