Example #1
0
        public void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            if (_canvas == null)
            {
                _canvas = sender as ICanvas;
            }
            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                if (Control.MouseButtons == MouseButtons.Left)
                {
                    _bPoint.X = e.ScreenX;
                    _bPoint.Y = e.ScreenY;
                }
                break;

            case enumCanvasEventType.MouseMove:
                if (_bPoint.IsEmpty)
                {
                    return;
                }
                _prePoint.X = e.ScreenX;
                _prePoint.Y = e.ScreenY;
                _canvas.Refresh(enumRefreshType.FlyLayer);
                break;

            case enumCanvasEventType.MouseUp:
                HandAction(e);
                _prePoint = Point.Empty;
                _bPoint   = Point.Empty;
                break;
            }
        }
Example #2
0
        public void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            switch (_pencilType)
            {
            case enumPencilType.Point:
                EventPoint(sender, eventType, e);
                break;

            case enumPencilType.FreeCurve:
                EventFreeCurve(sender, eventType, e);
                break;

            case enumPencilType.Rectangle:
                EventRectangle(sender, eventType, e);
                break;

            case enumPencilType.Polygon:
                EventPolygon(sender, eventType, e);
                break;

            case enumPencilType.Circle:
                EventCircle(sender, eventType, e);
                break;

            case enumPencilType.ControlFreeCurve:
                EventControlFreeCurve(sender, eventType, e);
                break;
            }
        }
Example #3
0
 private void HandPointAction(DrawingMouseEventArgs e)
 {
     if (_interactivePoinScreen != null)
     {
         _interactivePoinScreen(this, new PointF(e.ScreenX, e.ScreenY));
     }
     if (_interactivePoinGeo != null)
     {
         _interactivePoinGeo(this, GetSelectedGeoPoint(_bPoint));
     }
 }
Example #4
0
        public void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            if (!_enabled)
            {
                return;
            }
            bool visible = _visible;

            switch (eventType)
            {
            case enumCanvasEventType.MouseMove:
                if (_autoHide)
                {
                    _visible = _bounds.Contains(e.ScreenX, e.ScreenY);
                    if (!_visible && e.ScreenX <= _bounds.X + _bounds.Width)
                    {
                        _visible = true;
                    }
                    if ((visible && _visible) || (visible && !_visible))
                    {
                        (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                    }
                }
                if (_visible)
                {
                    FloatToolItem it = HitToolItem(e.ScreenX, e.ScreenY);
                    _currentToolItem = it;
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                }
                break;

            case enumCanvasEventType.MouseDown:
                if (Control.MouseButtons == MouseButtons.Left)
                {
                    FloatToolItem clickedItem = HitToolItem(e.ScreenX, e.ScreenY);
                    if (clickedItem != null)
                    {
                        if (_toolItemClicked != null)
                        {
                            _toolItemClicked(clickedItem);
                            e.IsHandled = true;                 //激活工具栏,取消后续操作
                        }
                    }
                }
                else if (Control.MouseButtons == MouseButtons.Right)
                {
                    if (e.ScreenX <= _bounds.X + _bounds.Width)
                    {
                        _autoHide = !_autoHide;
                    }
                }
                break;
            }
        }
Example #5
0
 public void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
 {
     if (!_isShowCrossLines)
     {
         return;
     }
     switch (eventType)
     {
     case enumCanvasEventType.MouseMove:
         _currentScreenX = e.ScreenX;
         _currentScreenY = e.ScreenY;
         (sender as ICanvas).Refresh(enumRefreshType.All);
         break;
     }
 }
Example #6
0
 private void HandAction(DrawingMouseEventArgs e)
 {
     if (_bPoint.IsEmpty && _prePoint.IsEmpty)
     {
         return;
     }
     if (!_bPoint.IsEmpty && _prePoint.IsEmpty)
     {
         HandPointAction(e);
     }
     else
     {
         HandRectAction();
     }
 }
Example #7
0
        private void EventRectangle(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
reSwitchLine:
            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                if (Control.MouseButtons == MouseButtons.Right)
                {
                    eventType = enumCanvasEventType.MouseUp;
                    goto reSwitchLine;
                }
                if (!_isDrawing)
                {
                    _prePoint  = new Point(e.ScreenX, e.ScreenY);
                    _isDrawing = true;
                }
                break;

            case enumCanvasEventType.MouseMove:
                if (_isDrawing && Control.MouseButtons == MouseButtons.Left)
                {
                    _crtPoint = new Point(e.ScreenX, e.ScreenY);
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                }
                break;

            case enumCanvasEventType.MouseUp:
                if (_isDrawing)
                {
                    if (_prePoint.X == e.ScreenX && _prePoint.Y == e.ScreenY)    //鼠标未移动,不绘制
                    {
                        _prePoint  = Point.Empty;
                        _crtPoint  = Point.Empty;
                        _isDrawing = false;
                        return;
                    }
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                    NotifyResult((sender as ICanvas).CoordTransform, sender as ICanvas);
                    _prePoint  = Point.Empty;
                    _crtPoint  = Point.Empty;
                    _isDrawing = false;
                }
                break;
            }
        }
Example #8
0
        public void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            if (!_isAllowEdit)
            {
                return;
            }
            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                EditObject eobj = FindEditObject(sender, e);
                if (eobj != null)
                {
                    _prePoint       = new Point(e.ScreenX, e.ScreenY);
                    _currentEditObj = eobj;
                }
                else
                {
                    _currentEditObj = null;
                }
                (sender as ICanvas).Refresh(enumRefreshType.All);
                break;

            case enumCanvasEventType.MouseMove:
                if (_currentEditObj != null && Control.MouseButtons == MouseButtons.Left)
                {
                    if (_editAction == enumEditAction.DragObj)
                    {
                        DoDrag(sender, e.ScreenX - _prePoint.X, e.ScreenY - _prePoint.Y);
                        _prePoint = new Point(e.ScreenX, e.ScreenY);
                    }
                    else if (_editAction == enumEditAction.DrawVertext)
                    {
                        DoDragVertext(sender, e.ScreenX - _prePoint.X, e.ScreenY - _prePoint.Y);
                        _prePoint = new Point(e.ScreenX, e.ScreenY);
                    }
                }
                break;

            case enumCanvasEventType.MouseUp:
                _prePoint        = Point.Empty;
                _currentEditObj  = null;
                _crtVertextIndex = -1;
                break;
            }
        }
Example #9
0
        public virtual void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            if (_canvas == null)
            {
                _canvas = sender as ICanvas;
            }
            double prjX, prjY;
            double geoX, geoY;

            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                if (_preLocation == null && Control.MouseButtons == MouseButtons.Left)
                {
                    _preLocation = new CoordPoint();
                    _canvas.CoordTransform.Screen2Prj(e.ScreenX, e.ScreenY, out prjX, out prjY);
                    _canvas.CoordTransform.Prj2Geo(prjX, prjY, out geoX, out geoY);
                    _preLocation.X = geoX;
                    _preLocation.Y = geoY;
                }
                break;

            case enumCanvasEventType.MouseMove:
                if (_preLocation == null)
                {
                    return;
                }
                _canvas.CoordTransform.Screen2Prj(e.ScreenX, e.ScreenY, out prjX, out prjY);
                _canvas.CoordTransform.Prj2Geo(prjX, prjY, out geoX, out geoY);
                ApplyOffset(sender as ICanvas, geoX - _preLocation.X, geoY - _preLocation.Y);
                _preLocation.X = geoX;
                _preLocation.Y = geoY;
                break;

            case enumCanvasEventType.MouseUp:
                _preLocation = null;
                geoX         = geoY = prjX = prjY = 0;
                if (AdjustFinishedHandler != null)
                {
                    AdjustFinishedHandler(this, null);
                }
                break;
            }
        }
Example #10
0
        private void EventFreeCurve(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
reSwitchLine:
            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                if (Control.MouseButtons == MouseButtons.Right)
                {
                    eventType = enumCanvasEventType.MouseUp;
                    goto reSwitchLine;
                }
                if (!_isDrawing)
                {
                    _vertexts.Clear();
                    _vertexts.Add(new Point(e.ScreenX, e.ScreenY));
                    _isDrawing = true;
                }
                break;

            case enumCanvasEventType.MouseMove:
                if (_isDrawing && Control.MouseButtons == MouseButtons.Left)
                {
                    _vertexts.Add(new Point(e.ScreenX, e.ScreenY));
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                }
                break;

            case enumCanvasEventType.MouseUp:
            case enumCanvasEventType.DoubleClick:
                if (_isDrawing)
                {
                    if (_vertexts.Count > 1)    //闭合
                    {
                        _vertexts.Add(_vertexts[0]);
                    }
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                    NotifyResult((sender as ICanvas).CoordTransform, sender as ICanvas);
                    _vertexts.Clear();
                    _isDrawing = false;
                }
                break;
            }
        }
Example #11
0
        private void EventPoint(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            if (eventType != enumCanvasEventType.MouseDown)
            {
                return;
            }
            GeometryOfDrawed geometry = new GeometryOfDrawed();

            geometry.ShapeType = _pencilType.ToString();
            ICoordinateTransform tran = (sender as ICanvas).CoordTransform;
            float row = 0, col = 0;

            tran.Screen2Raster(e.ScreenX, e.ScreenY, out row, out col);
            geometry.RasterPoints = new PointF[] { new PointF(row, col) };
            if (this._pencilDrawedResultFinished != null)
            {
                this._pencilDrawedResultFinished(geometry);
            }
        }
Example #12
0
        private EditObject FindEditObject(object sender, DrawingMouseEventArgs e)
        {
            Point      pt        = new Point(e.ScreenX, e.ScreenY);
            EditObject returnObj = null;

            foreach (object obj in _editObjects.Keys)
            {
                EditObject eobj = _editObjects[obj];
                if (eobj.Path == null)
                {
                    continue;
                }
                //鼠标点击的顶点
                for (int i = 0; i < eobj.Path.PointCount; i++)
                {
                    RectangleF rect = new RectangleF(eobj.Path.PathPoints[i].X - EDIT_BOX_HALF_WIDTH,
                                                     eobj.Path.PathPoints[i].Y - EDIT_BOX_HALF_WIDTH,
                                                     EDIT_BOX_WIDTH, EDIT_BOX_WIDTH);
                    if (rect.Contains(pt))
                    {
                        _crtVertextIndex = i;
                        eobj.IsSelected  = true;
                        returnObj        = eobj;
                        _editAction      = enumEditAction.DrawVertext;
                        goto endLine;
                    }
                }
                //鼠标点击在几何形状内部
                if (eobj.Path.IsVisible(new Point(e.ScreenX, e.ScreenY)))
                {
                    eobj.IsSelected = true;
                    returnObj       = eobj;
                    _editAction     = enumEditAction.DragObj;
                }
                else
                {
                    eobj.IsSelected = false;
                }
            }
endLine:
            return(returnObj);
        }
Example #13
0
        private void EventPolygon(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
reSwitchLine:
            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                if (Control.MouseButtons == MouseButtons.Right)
                {
                    eventType = enumCanvasEventType.DoubleClick;
                    goto reSwitchLine;
                }
                if (!_isDrawing)
                {
                    _vertexts.Clear();
                    _vertexts.Add(new Point(e.ScreenX, e.ScreenY));
                    _isDrawing = true;
                }
                else
                {
                    _vertexts.Add(new Point(e.ScreenX, e.ScreenY));
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                }
                break;

            case enumCanvasEventType.MouseMove:
                if (_isDrawing)
                {
                    _crtPoint = new Point(e.ScreenX, e.ScreenY);
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                }
                break;

            case enumCanvasEventType.DoubleClick:
                _vertexts.Add(new Point(e.ScreenX, e.ScreenY));
                _isDrawing = false;
                (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                NotifyResult((sender as ICanvas).CoordTransform, sender as ICanvas);
                _vertexts.Clear();
                break;
            }
        }
Example #14
0
        private object[] FindSelectedObject(object sender, DrawingMouseEventArgs e)
        {
            object[]      aios   = _aoiContainerLayer.AOIs == null ? null : _aoiContainerLayer.AOIs.ToArray();
            List <object> objs   = new List <object>();
            Point         pt     = new Point(e.ScreenX, e.ScreenY);
            ICanvas       canvas = sender as ICanvas;

            foreach (object obj in aios)
            {
                GraphicsPath path = ToGraphicsPath(obj, canvas);
                if (path == null)
                {
                    continue;
                }
                //鼠标点击在几何形状内部
                if (path.IsVisible(new Point(e.ScreenX, e.ScreenY)))
                {
                    objs.Add(obj);
                }
            }
            return(objs.Count == 0 ? null : objs.ToArray());
        }
Example #15
0
        private void EventCircle(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                if (!_isDrawing)
                {
                    _prePoint  = new Point(e.ScreenX, e.ScreenY);
                    _isDrawing = true;
                }
                break;

            case enumCanvasEventType.MouseMove:
                if (_isDrawing)
                {
                    _crtPoint = new Point(e.ScreenX, e.ScreenY);
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                }
                break;

            case enumCanvasEventType.MouseUp:
                if (_isDrawing)
                {
                    if (_prePoint.X == e.ScreenX && _prePoint.Y == e.ScreenY)    //鼠标未移动,不绘制
                    {
                        _crtPoint  = Point.Empty;
                        _prePoint  = Point.Empty;
                        _isDrawing = false;
                        return;
                    }
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                    NotifyResult((sender as ICanvas).CoordTransform, sender as ICanvas);
                    _crtPoint  = Point.Empty;
                    _prePoint  = Point.Empty;
                    _isDrawing = false;
                }
                break;
            }
        }
Example #16
0
        public void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            if (!_edit)
            {
                return;
            }
            if (_aoiContainerLayer == null || _aoiContainerLayer.AOIs == null || _aoiContainerLayer.AOIs.Count() == 0)
            {
                return;
            }
            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                object[] selectedObj = FindSelectedObject(sender, e);
                if (selectedObj != null)
                {
                    foreach (object obj in selectedObj)
                    {
                        if (_geometrys.Contains(obj))
                        {
                            _geometrys.Remove(obj);
                        }
                        else
                        {
                            _geometrys.Add(obj);
                        }
                    }
                }
                (sender as ICanvas).Refresh(enumRefreshType.All);
                break;

            case enumCanvasEventType.MouseMove:
                break;

            case enumCanvasEventType.MouseUp:
                break;
            }
        }
Example #17
0
        public void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            if (!_enabled)
            {
                return;
            }
            ICanvas        canvas  = sender as ICanvas;
            IRasterDrawing drawing = canvas.PrimaryDrawObject as IRasterDrawing;

            if (drawing == null || drawing.DataProviderCopy == null)
            {
                return;
            }
            ICoordinateTransform coordTran = canvas.CoordTransform;

            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
            {
                try
                {
                    _isGettingData = true;
                    PixelInfo pInfo = GetPixelInfo(canvas, e.ScreenX, e.ScreenY);
                    if (_beginPoint.IsEmpty || _beginPoint.IsEmpty || _isNewProfile)
                    {        //开始一条新的
                        _beginPoint   = pInfo;
                        _endPoint     = PixelInfo.Empty;
                        _vertices     = new Point[] { Point.Empty, Point.Empty };
                        _isNewProfile = false;
                    }
                    else
                    {        //完成一条线,完成本次剖面线选择
                        _endPoint = pInfo;
                        _enabled  = false;
                        GetData(canvas);
                    }
                }
                finally
                {
                    _isGettingData = false;
                }
            }
            break;

            case enumCanvasEventType.MouseMove:
                if (_endPoint.IsEmpty && !_isNewProfile)
                {
                    PixelInfo pInfo = GetPixelInfo(canvas, e.ScreenX, e.ScreenY);
                    _mousePoint = pInfo;
                }
                break;

            case enumCanvasEventType.MouseUp:
                break;

            case enumCanvasEventType.MouseWheel:
                break;

            case enumCanvasEventType.Paning:
                break;

            case enumCanvasEventType.Zooming:
                break;

            case enumCanvasEventType.BeginPan:
                break;

            case enumCanvasEventType.BeginZoom:
                break;

            case enumCanvasEventType.DoubleClick:
                break;

            case enumCanvasEventType.EndPaning:
                break;

            case enumCanvasEventType.EndZoom:
                break;

            case enumCanvasEventType.KeyDown:
                break;

            case enumCanvasEventType.KeyPress:
                break;

            case enumCanvasEventType.KeyUp:
                break;

            default:
                break;
            }
        }
Example #18
0
        public void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            if (!_enabled)
            {
                return;
            }
            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                if (_coordinates == null)
                {
                    _coordinates  = new List <CoordPoint>();
                    _curDistances = new List <double>();
                }
                PointF pt = new PointF(e.ScreenX, e.ScreenY);
                ToRasterPointF(ref pt, sender as ICanvas);
                CoordPoint perCoord        = new CoordPoint(pt.X, pt.Y);
                CoordPoint controlPointGeo = new CoordPoint(perCoord.X, perCoord.Y);
                PrjToGeo(controlPointGeo, (sender as ICanvas).CoordTransform);
                double distance = 0;
                if (_preControlPointGeo != null)    //非起始点
                {
                    distance = GetDist(_preControlPointGeo, controlPointGeo);
                    if (distance == 0)    //和前一个点重合,放弃该点
                    {
                        break;
                    }
                    _previousDistance = _previousDistance + distance;
                }
                _coordinates.Add(perCoord);
                _curDistances.Add(_previousDistance);
                _preControlPointGeo = controlPointGeo;
                _isDrawing          = true;
                break;

            case enumCanvasEventType.MouseMove:
                if (_isDrawing)
                {
                    if (_coordinates == null || _coordinates.Count == 0)
                    {
                        return;
                    }
                    _mousePosition = new Point(e.ScreenX, e.ScreenY);
                    PointF     mousePosition2 = new PointF(e.ScreenX, e.ScreenY);
                    CoordPoint mouseCoord     = SrceenToGeo(mousePosition2, (sender as ICanvas).CoordTransform);
                    _mouseDistance = GetDist(_preControlPointGeo, mouseCoord);
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                }
                break;

            case enumCanvasEventType.DoubleClick:
                if (_isDrawing)
                {
                    _previousParts.Add(_coordinates);
                    _previousDistances.Add(_curDistances.ToArray());
                    _coordinates        = new List <CoordPoint>();
                    _curDistances       = new List <double>();
                    _mousePosition      = Point.Empty;
                    _isDrawing          = false;
                    _preControlPointGeo = null;
                    _previousDistance   = 0f;
                    _enabled            = false;
                }
                break;
            }
        }
Example #19
0
        public virtual void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
            if (_canvas == null)
            {
                _canvas = sender as ICanvas;
            }
            double prjX, prjY;
            double geoX, geoY;
            double prjX2, prjY2;
            double geoX2, geoY2;

            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                if (_preLocation == null && Control.MouseButtons == MouseButtons.Left)
                {
                    _preLocation = new CoordPoint();
                    _canvas.CoordTransform.Screen2Prj(e.ScreenX, e.ScreenY, out prjX, out prjY);
                    _canvas.CoordTransform.Prj2Geo(prjX, prjY, out geoX, out geoY);
                    _preLocation.X = geoX;
                    _preLocation.Y = geoY;
                }
                break;

            case enumCanvasEventType.MouseMove:
                if (_preLocation == null)
                {
                    return;
                }
                _canvas.CoordTransform.Screen2Prj(e.ScreenX, e.ScreenY, out prjX, out prjY);
                _canvas.CoordTransform.Prj2Geo(prjX, prjY, out geoX, out geoY);
                ApplyOffset(sender as ICanvas, geoX - _preLocation.X, geoY - _preLocation.Y);
                _preLocation.X = geoX;
                _preLocation.Y = geoY;
                break;

            case enumCanvasEventType.MouseUp:
                _preLocation = null;
                geoX         = geoY = prjX = prjY = 0;
                if (AdjustFinishedHandler != null)
                {
                    AdjustFinishedHandler(this, null);
                }
                break;

            case enumCanvasEventType.KeyDown:
                if (e != null && e.E != null && e.E is PreviewKeyDownEventArgs)
                {
                    PreviewKeyDownEventArgs arg = e.E as PreviewKeyDownEventArgs;
                    switch (arg.KeyCode)
                    {
                    case Keys.Left:
                        _canvas.CoordTransform.Screen2Prj(0, 0, out prjX, out prjY);
                        _canvas.CoordTransform.Prj2Geo(prjX, prjY, out geoX, out geoY);

                        _canvas.CoordTransform.Screen2Prj(-1, 0, out prjX2, out prjY2);
                        _canvas.CoordTransform.Prj2Geo(prjX2, prjY2, out geoX2, out geoY2);

                        ApplyOffset(sender as ICanvas, geoX2 - geoX, 0d);
                        break;

                    case Keys.Right:
                        _canvas.CoordTransform.Screen2Prj(0, 0, out prjX, out prjY);
                        _canvas.CoordTransform.Prj2Geo(prjX, prjY, out geoX, out geoY);

                        _canvas.CoordTransform.Screen2Prj(1, 0, out prjX2, out prjY2);
                        _canvas.CoordTransform.Prj2Geo(prjX2, prjY2, out geoX2, out geoY2);
                        ApplyOffset(sender as ICanvas, geoX2 - geoX, 0d);
                        break;

                    case Keys.Up:
                        _canvas.CoordTransform.Screen2Prj(0, 0, out prjX, out prjY);
                        _canvas.CoordTransform.Prj2Geo(prjX, prjY, out geoX, out geoY);

                        _canvas.CoordTransform.Screen2Prj(0, -1, out prjX2, out prjY2);
                        _canvas.CoordTransform.Prj2Geo(prjX2, prjY2, out geoX2, out geoY2);
                        ApplyOffset(sender as ICanvas, 0d, geoY2 - geoY);
                        break;

                    case Keys.Down:
                        _canvas.CoordTransform.Screen2Prj(0, 0, out prjX, out prjY);
                        _canvas.CoordTransform.Prj2Geo(prjX, prjY, out geoX, out geoY);

                        _canvas.CoordTransform.Screen2Prj(0, 1, out prjX2, out prjY2);
                        _canvas.CoordTransform.Prj2Geo(prjX2, prjY2, out geoX2, out geoY2);
                        ApplyOffset(sender as ICanvas, 0d, geoY2 - geoY);
                        break;

                    default:
                        break;
                    }
                }
                break;
            }
        }
Example #20
0
 public void Event(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
 {
 }
Example #21
0
        private void EventControlFreeCurve(object sender, enumCanvasEventType eventType, DrawingMouseEventArgs e)
        {
reSwitchLine:
            switch (eventType)
            {
            case enumCanvasEventType.MouseDown:
                if (Control.MouseButtons == MouseButtons.Right)
                {
                    eventType = enumCanvasEventType.DoubleClick;
                    goto reSwitchLine;
                }
                if (Control.MouseButtons == MouseButtons.Left && !_isDrawing)
                {
                    _vertexts.Clear();
                    _controls.Clear();
                    _vertexts.Add(new Point(e.ScreenX, e.ScreenY));
                    _controls.Add(new Point(e.ScreenX, e.ScreenY));
                    if (_controlPointIsAdded != null)
                    {
                        PointF pt = new PointF(_controls[_controls.Count - 1].X, _controls[_controls.Count - 1].Y);
                        ToRasterPointF(ref pt, sender as ICanvas);
                        _controlPointIsAdded(pt);
                    }
                    _isDrawing = true;
                }
                else if (Control.MouseButtons == MouseButtons.Left)
                {
                    _controls.Add(new Point(e.ScreenX, e.ScreenY));
                    if (_controlPointIsAdded != null)
                    {
                        PointF pt = new PointF(_controls[_controls.Count - 1].X, _controls[_controls.Count - 1].Y);
                        ToRasterPointF(ref pt, sender as ICanvas);
                        _controlPointIsAdded(pt);
                    }
                }
                break;

            case enumCanvasEventType.MouseMove:
                if (_isDrawing)
                {
                    _vertexts.Add(new Point(e.ScreenX, e.ScreenY));
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                }
                break;

            case enumCanvasEventType.DoubleClick:
                if (_isDrawing)
                {
                    //if (_vertexts.Count > 1)//闭合          //线,不需要闭合
                    //    _vertexts.Add(_vertexts[0]);
                    (sender as ICanvas).Refresh(enumRefreshType.FlyLayer);
                    NotifyResult((sender as ICanvas).CoordTransform, sender as ICanvas);
                    _vertexts.Clear();
                    _controls.Clear();
                    _isDrawing = false;
                }
                break;
            }
        }