Esempio n. 1
0
        private void GetTextFromTextBox(TextBox box)
        {
            string text = box.Text;

            if (_currentHost == null)
            {
                return;
            }
            if (_txtEle == null)
            {
                return;
            }
            if (String.IsNullOrEmpty(text))
            {
                _currentHost.Container.Controls.Remove(box);
                _txtEle.Visible = true;
                _currentHost.Render();
                return;
            }
            _currentHost.Container.Controls.Remove(box);
            _txtEle.Text    = text;
            _txtEle.Visible = true;
            _txtEle.ApplySize(box.Width - _txtEle.Size.Width * _scale, 0);
            _currentHost.Render();
        }
Esempio n. 2
0
        public override void Event(object sender, enumCanvasEventType eventType, CanvasEventArgs e)
        {
            if (_runtime == null)
            {
                return;
            }
            float x0 = _location.X, y0 = _location.Y;

            _runtime.Layout2Screen(ref x0, ref y0);
            float x = e.ScreenX - x0;
            float y = e.ScreenY - y0;

            if (!_isInsideProvider)
            {
                x += _offsetX;
                y += _offsetY;
            }
            MouseButtons mouseButtons = (e.E is MouseEventArgs) ? (e.E as MouseEventArgs).Button : Control.MouseButtons;

            IControlMessageAccepter msgAccepter = (_provider as IDataFrameDataProvider).Canvas as IControlMessageAccepter;

            switch (eventType)
            {
            case enumCanvasEventType.MouseWheel:
                msgAccepter.AcceptMouseWheel(this, new MouseEventArgs(mouseButtons, 0, (int)x, (int)y, e.WheelDelta));
                (_provider as IDataFrameDataProvider).Canvas.Refresh(enumRefreshType.All);
                _host.Render();
                break;

            case enumCanvasEventType.MouseDown:
                msgAccepter.AcceptMouseDown(this, new MouseEventArgs(mouseButtons, 0, (int)x, (int)y, e.WheelDelta));
                break;

            case enumCanvasEventType.MouseMove:
                msgAccepter.AcceptMouseMove(this, new MouseEventArgs(mouseButtons, 0, (int)x, (int)y, e.WheelDelta));
                (_provider as IDataFrameDataProvider).Canvas.Refresh(enumRefreshType.All);
                _host.Render();
                break;

            case enumCanvasEventType.MouseUp:
                msgAccepter.AcceptMouseUp(this, new MouseEventArgs(mouseButtons, 0, (int)x, (int)y, e.WheelDelta));
                (_provider as IDataFrameDataProvider).Canvas.Refresh(enumRefreshType.All);
                _host.Render();
                break;

            case enumCanvasEventType.KeyDown:
                msgAccepter.AcceptKeyDown(this, new KeyEventArgs(Keys.G));
                (_provider as IDataFrameDataProvider).Canvas.Refresh(enumRefreshType.All);
                _host.Render();
                break;
            }
        }
Esempio n. 3
0
        private void RefreshDataFrame(object sender, EventArgs e)
        {
            if (_dateTimes == null)
            {
                return;
            }
            //vars.Add("{OrbitDateTime}", dateTime.ToLongDateString() + dateTime.ToString(" HH:mm") + " (北京时)");
            Dictionary <string, string> vars = new Dictionary <string, string>();

            if (_dateTimes != null && _dateTimes.Length > _index && _dateTimes[_index] != DateTime.MinValue)
            {
                vars.Add(_preDateString, _dateTimes[_index].AddHours(8).ToString("yyyy年MM月dd日 HH:mm") + " (北京时)");
            }
            else
            {
                vars.Add(_preDateString, "");
            }
            if (vars.Count != 0 && _host.Template != null)
            {
                _host.Template.ApplyVars(vars);
                _preDateString = _dateTimes[_index].AddHours(8).ToString("yyyy年MM月dd日 HH:mm") + " (北京时)";
                if (_index < _dateTimes.Length - 1)
                {
                    _index++;
                }
                else if (_index == _dateTimes.Length - 1)
                {
                    _index = 0;
                }
            }
            _host.Render(true);
        }
Esempio n. 4
0
        //移除选中层
        void itemLayer_Click(object sender, EventArgs e)
        {
            RadMenuItem item = sender as RadMenuItem;

            if (item == null)
            {
                return;
            }
            ILayoutHost host   = null;
            ICanvas     canvas = GetCanvasFromSession(ref host);

            if (canvas == null)
            {
                return;
            }
            if ((item.Tag as GeoGridLayer) != null)//经纬网格
            {
                RemoveGridLayer(canvas);
            }
            else // 矢量层
            {
                RemoveVectorLayer(canvas, item);
            }
            _removeRef.Items.Clear();
            canvas.Refresh(enumRefreshType.VectorLayer);
            if (host != null)
            {
                host.Render(true);
            }
            RefreshLayerManager();
        }
Esempio n. 5
0
        private void RemoveVectorLayer(string filename)
        {
            try
            {
                ILayoutHost host   = null;
                ICanvas     canvas = GetCanvasFromSession(ref host);
                if (canvas == null)
                {
                    return;
                }
                IVectorHostLayer vectorHost = canvas.LayerContainer.VectorHost;
                if (vectorHost == null)
                {
                    return;
                }
                Map map = vectorHost.Map as Map;
                if (map == null)
                {
                    return;
                }
                CodeCell.AgileMap.Core.ILayer _layer = shps[filename.ToLower()];
                map.LayerContainer.Remove(_layer);

                canvas.Refresh(enumRefreshType.VectorLayer);
                if (host != null)
                {
                    host.Render(true);
                }
                RefreshLayerManager();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Esempio n. 6
0
        public override void Execute(string argument)
        {
            if (String.IsNullOrEmpty(argument))
            {
                return;
            }
            ILayoutViewer viewer = _smartSession.SmartWindowManager.ActiveViewer as ILayoutViewer;

            if (viewer == null)
            {
                return;
            }
            float angle;
            bool  ok = float.TryParse(argument, out angle);

            if (!ok)
            {
                return;
            }
            ILayoutHost host = viewer.LayoutHost;

            if (host == null)
            {
                return;
            }
            Rotate90(host.LayoutRuntime, angle);
            host.Render();
        }
Esempio n. 7
0
 private void MovingElement(ILayoutHost host, CanvasEventArgs e)
 {
     host.Container.Cursor = Cursors.SizeAll;
     IElement[] selections = host.LayoutRuntime.Selection;
     if (selections == null)
     {
         return;
     }
     _isMoving = true;
     foreach (IElement ele in selections)
     {
         if (!ele.IsSelected)
         {
             continue;
         }
         if (ele is SizableElementGroup)
         {
             (ele as SizableElementGroup).ApplyLocation(e.LayoutX - _beginPoint.X, e.LayoutY - _beginPoint.Y);
         }
         else if (ele is SizableElement)
         {
             IElement group = host.LayoutRuntime.Layout.FindParent(ele);
             if (group != null && group is ISizableElementGroup)
             {
                 (group as ISizableElementGroup).ApplyLocationByItemSelected(e.LayoutX - _beginPoint.X, e.LayoutY - _beginPoint.Y);
             }
             (ele as SizableElement).ApplyLocation(e.LayoutX - _beginPoint.X, e.LayoutY - _beginPoint.Y);
         }
     }
     _beginPoint.X = e.LayoutX;
     _beginPoint.Y = e.LayoutY;
     host.Render();
 }
Esempio n. 8
0
        /// <summary>
        /// 关注区域管理器
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void _manageBookMarks_Click(object sender, EventArgs e)
        {
            if (_session == null)
            {
                return;
            }
            ILayoutHost host = null;
            frmBookMarkGroupsManager manager = null;
            ICanvas canvas = GetCanvasFromSession(ref host);

            if (canvas == null)
            {
                manager = new frmBookMarkGroupsManager(true);
            }
            else
            {
                CoordEnvelope geoEvp = GetGeoEnvelopeByCanvas(canvas);
                manager = new frmBookMarkGroupsManager(false, geoEvp);
            }
            if (manager.ShowDialog() == DialogResult.OK)
            {
                CoordEnvelope envelope = manager.ApplyEnvelope;
                if (envelope == null)
                {
                    return;
                }
                if (canvas == null)
                {
                    return;
                }
                IRasterDrawing drawing = canvas.PrimaryDrawObject as IRasterDrawing;
                if (drawing == null)
                {
                    return;
                }
                // EnlargeEnvelope(ref envelop);
                CoordEnvelope evp = canvas.CurrentEnvelope.Clone();
                canvas.CoordTransform.Geo2Prj(envelope);
                //当所选的关注区域不在当前的范围内时,给出对话框提示是否定位
                if (evp.MaxY < envelope.MinY || evp.MinY > envelope.MaxY || evp.MaxX < envelope.MinX || evp.MinX > envelope.MaxX)
                {
                    DialogResult dialogRe = MessageBox.Show("选中区域不在当前影像范围内,是否定位到选中区域?", "提示", MessageBoxButtons.YesNo);
                    if (dialogRe == DialogResult.No)
                    {
                        return;
                    }
                }
                canvas.CurrentEnvelope = envelope;
                canvas.Refresh(enumRefreshType.All);
                if (host != null)
                {
                    host.Render(true);
                }
            }
        }
Esempio n. 9
0
        public override void Execute(string type)
        {
            if (_smartSession.SmartWindowManager.ActiveViewer is ICanvasViewer)
            {
                GetCanvasByCanvasViewer();
            }
            else if (_smartSession.SmartWindowManager.ActiveViewer is ILayoutViewer)
            {
                GetCanvasByLayoutDataFrame();
            }
            if (_canvas == null)
            {
                return;
            }
            if (_canvas.LayerContainer == null)
            {
                return;
            }
            if (_canvas.LayerContainer.VectorHost != null)
            {
                (_canvas.LayerContainer.VectorHost as IVectorHostLayer).ClearAll();
            }
            switch (type)
            {
            case "basic":
                Layer removeLayer = null;
                foreach (Layer layer in _canvas.LayerContainer.Layers)
                {
                    if ((layer as GeoGridLayer) != null)
                    {
                        removeLayer = layer;
                    }
                }
                if (removeLayer != null)
                {
                    _canvas.LayerContainer.Layers.Remove(removeLayer);
                }
                break;

            case "inters":
                break;

            case "split":
                break;

            case "data":
                break;
            }
            _canvas.Refresh(enumRefreshType.VectorLayer);
            if (_host != null)
            {
                _host.Render();
            }
        }
Esempio n. 10
0
 private void ApplyWheel(ILayoutHost host, CanvasEventArgs e)
 {
     if (e.WheelDelta > 0)
     {
         host.LayoutRuntime.Scale -= 0.1f;
     }
     else
     {
         host.LayoutRuntime.Scale += 0.1f;
     }
     host.Render();
 }
Esempio n. 11
0
        public override void Execute()
        {
            ILayoutViewer view = _smartSession.SmartWindowManager.ActiveViewer as ILayoutViewer;

            if (view == null)
            {
                return;
            }
            ILayoutHost host = view.LayoutHost;

            if (host == null)
            {
                return;
            }
            if (host.LayoutRuntime == null)
            {
                return;
            }
            if (host.LayoutRuntime.Layout == null)
            {
                return;
            }
            if (host.LayoutRuntime.Layout.Elements == null || host.LayoutRuntime.Layout.Elements.Count == 0)
            {
                return;
            }
            IDataFrame             df       = new DataFrame(host);
            IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider;

            if (provider == null)
            {
                return;
            }
            ICanvas c = provider.Canvas;

            if (c != null)
            {
                if (c.CanvasSetting != null)
                {
                    if (c.CanvasSetting.RenderSetting != null)
                    {
                        c.CanvasSetting.RenderSetting.BackColor = Color.White;
                    }
                }
                IVectorHostLayer vhost = new VectorHostLayer(null);
                c.LayerContainer.Layers.Add(vhost as GeoDo.RSS.Core.DrawEngine.ILayer);
            }
            host.LayoutRuntime.Layout.Elements.Insert(1, df);
            host.Render();
            host.ActiveDataFrame = df;
            TryRefreshLayerManager();
        }
Esempio n. 12
0
        private void DeleteSelectedElements(ILayoutHost host)
        {
            IElement[] selection = host.LayoutRuntime.Selection;
            if (selection == null)
            {
                return;
            }
            ILayout layout = host.LayoutRuntime.Layout;

            foreach (IElement ele in selection)
            {
                DeleteElement(ele, layout);
            }
            host.Render();
        }
Esempio n. 13
0
        //应用关注区域
        void interItem_Click(object sender, EventArgs e)
        {
            RadMenuItem item = sender as RadMenuItem;

            if (item == null)
            {
                return;
            }
            CoordEnvelope envelop = item.Tag as CoordEnvelope;

            if (envelop == null)
            {
                return;
            }
            ILayoutHost host   = null;
            ICanvas     canvas = GetCanvasFromSession(ref host);

            if (canvas == null)
            {
                MessageBox.Show("当前无法定位到关注区域,请打开影像数据!", "提示", MessageBoxButtons.OK);
                return;
            }
            IRasterDrawing drawing = canvas.PrimaryDrawObject as IRasterDrawing;

            if (drawing == null)
            {
                return;
            }
            // EnlargeEnvelope(ref envelop);
            CoordEnvelope evp = canvas.CurrentEnvelope.Clone();

            canvas.CoordTransform.Geo2Prj(envelop);
            //当所选的关注区域不在当前的范围内时,给出对话框提示是否定位
            if (evp.MaxY < envelop.MinY || evp.MinY > envelop.MaxY || evp.MaxX < envelop.MinX || evp.MinX > envelop.MaxX)
            {
                DialogResult dialogRe = MessageBox.Show("选中区域不在当前影像范围内,是否定位到选中区域?", "提示", MessageBoxButtons.YesNo);
                if (dialogRe == DialogResult.No)
                {
                    return;
                }
            }
            canvas.CurrentEnvelope = envelop;
            canvas.Refresh(enumRefreshType.All);
            if (host != null)
            {
                host.Render(true);
            }
        }
Esempio n. 14
0
        public override void Execute()
        {
            ICanvas _canvas = null; ILayoutHost _host = null;

            if (_smartSession.SmartWindowManager.ActiveViewer is ICanvasViewer)
            {
                GetCanvasByCanvasViewer(out _canvas);
                ICurrentRasterInteractiver cv = (_smartSession.SmartWindowManager.ActiveViewer as ICurrentRasterInteractiver);//LabelService也是ICanvasViewer上的矢量
                if (cv != null && cv.LabelService != null)
                {
                    cv.LabelService.Reset();
                }
            }
            else if (_smartSession.SmartWindowManager.ActiveViewer is ILayoutViewer)
            {
                GetCanvasByLayoutDataFrame(out _canvas, out _host);
            }
            if (_canvas == null)
            {
                return;
            }
            if (_canvas.LayerContainer == null)
            {
                return;
            }
            if (_canvas.LayerContainer.VectorHost != null)
            {
                RemoveAllVectorLayer(_canvas.LayerContainer.VectorHost as IVectorHostLayer);
            }
            Layer removeLayer = null;

            foreach (Layer layer in _canvas.LayerContainer.Layers)
            {
                if ((layer as GeoGridLayer) != null)
                {
                    removeLayer = layer;
                }
            }
            if (removeLayer != null)
            {
                _canvas.LayerContainer.Layers.Remove(removeLayer);
            }
            _canvas.Refresh(enumRefreshType.VectorLayer);
            if (_host != null)
            {
                _host.Render(true);
            }
        }
Esempio n. 15
0
        public override void Execute()
        {
            ILayoutViewer view = _smartSession.SmartWindowManager.ActiveViewer as ILayoutViewer;

            if (view == null)
            {
                return;
            }
            ILayoutHost host = view.LayoutHost;

            if (host == null)
            {
                return;
            }
            host.Aligment(enumElementAligment.HorizontalStrech);
            host.Render();
        }
Esempio n. 16
0
        private void ResetOSize(ILayoutHost host)
        {
            IElement[] selection = host.LayoutRuntime.Selection;
            if (selection == null)
            {
                return;
            }
            var v = selection.Where <IElement>((ele) => { return(ele is PictureElement); });

            if (v == null)
            {
                return;
            }
            foreach (PictureElement pic in v)
            {
                pic.ResetOSize();
            }
            host.Render();
        }
Esempio n. 17
0
        public override void Execute()
        {
            ILayoutViewer view = _smartSession.SmartWindowManager.ActiveViewer as ILayoutViewer;

            if (view == null)
            {
                return;
            }
            if (view.LayoutHost == null)
            {
                return;
            }
            ILayoutHost host = view.LayoutHost;
            IDataFrame  frm  = host.ActiveDataFrame;

            if (frm != null)
            {
                //(frm.Provider as IDataFrameDataProvider).Canvas.Refresh(enumRefreshType.All);
                host.Render(true);
            }
        }
Esempio n. 18
0
        private void TryAllArrowKeyMove(ILayoutHost host, PreviewKeyDownEventArgs e)
        {
            int step = 1;

            if (Control.ModifierKeys == Keys.Shift)
            {
                step = 5;
            }
            float x = step, y = 0;

            host.LayoutRuntime.Pixel2Layout(ref x, ref y);
            //
            IElement[] selection = host.LayoutRuntime.Selection;
            if (selection != null)
            {
                foreach (ISizableElement ele in selection)
                {
                    switch (e.KeyCode)
                    {
                    case Keys.Up:
                        ele.ApplyLocation(0, -step);
                        break;

                    case Keys.Down:
                        ele.ApplyLocation(0, step);
                        break;

                    case Keys.Right:
                        ele.ApplyLocation(step, 0);
                        break;

                    case Keys.Left:
                        ele.ApplyLocation(-step, 0);
                        break;
                    }
                }
            }
            host.Render();
        }
Esempio n. 19
0
 private void Apply(ILayoutHost host, int offsetX, int offsetY)
 {
     host.LayoutRuntime.ApplyOffset(offsetX, offsetY);
     host.Render();
 }
Esempio n. 20
0
        /// <summary>
        /// 添加经纬网格
        /// </summary>
        /// <param name="argument">经纬网格间隔:"1"</param>
        public override void Execute(string argument)
        {
            ICanvas     canvas = null;
            ILayoutHost host   = null;

            if (_smartSession.SmartWindowManager.ActiveViewer is ICanvasViewer)
            {
                canvas = GetCanvasByCanvasViewer();
            }
            else if (_smartSession.SmartWindowManager.ActiveViewer is ILayoutViewer)
            {
                canvas = GetCanvasByLayoutDataFrame(out host);
            }
            if (canvas == null)
            {
                return;
            }
            //无坐标的图片
            if (canvas.IsRasterCoord)
            {
                return;
            }
            //判断是否已经有经纬网格层的存在
            double intervel = 1f;
            bool   ok       = double.TryParse(argument, out intervel);

            if (!ok)
            {
                return;
            }
            List <ILayer> layers    = canvas.LayerContainer.Layers;
            GeoGridLayer  gridLayer = null;

            foreach (ILayer layer in layers)
            {
                if (layer is GeoGridLayer)
                {
                    gridLayer = (layer as GeoGridLayer);
                }
                else
                {
                    continue;
                }
            }
            //如果没有经纬网格的存在则新建经纬网格,并添加
            if (gridLayer == null)
            {
                gridLayer          = new GeoGridLayer();
                gridLayer.GridSpan = intervel;
                canvas.LayerContainer.Layers.Add(gridLayer);
            }
            //如果已经有经纬网格的存在则修改经纬网格的属性即可
            else
            {
                gridLayer.GridSpan = intervel;
            }
            canvas.Refresh(enumRefreshType.All);
            if (host != null)
            {
                //专题图中默认网格颜色为蓝色
                gridLayer.GridColor = Color.Blue;
                //刷新专题图
                host.Render(true);
            }
            //
            TryRefreshLayerManager();
        }
Esempio n. 21
0
 private void btnScale_Click(object sender, EventArgs e)
 {
     _host.LayoutRuntime.Scale = (float)numericUpDown1.Value / 100f;
     _host.Render();
 }
Esempio n. 22
0
        public override void Event(object sender, enumCanvasEventType eventType, CanvasEventArgs e)
        {
            ILayoutHost host = sender as ILayoutHost;

            switch (eventType)
            {
            case enumCanvasEventType.DoubleClick:
                HandleDoubleClick(host, e);
                break;

            case enumCanvasEventType.KeyDown:
                HandleKey(host, e);
                break;

            case enumCanvasEventType.MouseDown:
                if (Control.MouseButtons == MouseButtons.Left)
                {
                    _isMoving   = false;
                    _beginPoint = new PointF(e.LayoutX, e.LayoutY);
                    //by chennan 20131107 修改图元无法点选选中
                    HitByPoint(sender as ILayoutHost, e.LayoutX, e.LayoutY);

                    _editedElement = GetEditedElementFromSelection(sender as ILayoutHost, e);
                    if (_editedElement == null)
                    {
                        HitByPoint(sender as ILayoutHost, e.LayoutX, e.LayoutY);
                        _editedElement = GetEditedElementFromSelection(sender as ILayoutHost, e);
                    }
                    if (_editedElement != null)
                    {
                        if (_anchorIndex != -1)
                        {
                            _action = enumAction.EditAnchor;
                        }
                        else
                        {
                            _action = enumAction.MovingElement;
                        }
                    }
                    else
                    {
                        _beginPointScreen.X = e.ScreenX;
                        _beginPointScreen.Y = e.ScreenY;
                        _action             = enumAction.SelectByRect;
                    }
                }
                break;

            case enumCanvasEventType.MouseMove:
                if (_action == enumAction.SelectByRect)
                {
                    _isMoving = false;
                    //   _isMultiSelect = false;
                    _crtPointScreen.X = e.ScreenX;
                    _crtPointScreen.Y = e.ScreenY;
                    host.Render();
                }
                else if (_action == enumAction.MovingElement)
                {
                    if (_editedElement.IsLocked)
                    {
                        break;
                    }
                    _isMultiSelect = false;
                    MovingElement(host, e);
                }
                else if (_action == enumAction.EditAnchor)
                {
                    if (_editedElement.IsLocked)
                    {
                        break;
                    }
                    _isMoving = false;
                    //  _isMultiSelect = false;
                    host.Container.Cursor = GetCursorByAnchor();
                    _editedBox.Apply(host.LayoutRuntime, _anchorIndex, _beginPoint, new PointF(e.LayoutX, e.LayoutY));
                    _beginPoint.X = e.LayoutX;
                    _beginPoint.Y = e.LayoutY;
                    host.Render();
                }
                break;

            case enumCanvasEventType.MouseUp:
                if (_beginPoint.IsEmpty)
                {
                    return;
                }
                if ((e.LayoutX - _beginPoint.X) < float.Epsilon && (e.LayoutY - _beginPoint.Y) < float.Epsilon)
                {
                    bool isEmpty = HitByPoint(sender as ILayoutHost, e.LayoutX, e.LayoutY);
                    //by chennan 20131107 多选时未点选到正确位置不去除之前已选取的图元
                    if (isEmpty && ((Control.ModifierKeys & Keys.Shift) != Keys.Shift))
                    {
                        host.LayoutRuntime.ClearSelection();
                    }
                    else
                    {
                        ClearOtherSelection(host, e);
                    }
                }
                else
                {
                    RectangleF rect = new RectangleF(Math.Min(_beginPoint.X, e.LayoutX),
                                                     Math.Min(_beginPoint.Y, e.LayoutY),
                                                     Math.Abs(_beginPoint.X - e.LayoutX),
                                                     Math.Abs(_beginPoint.Y - e.LayoutY));
                    HitByRect(sender as ILayoutHost, rect);
                }
                host.Render();
                _action               = enumAction.None;
                _anchorIndex          = -1;
                host.Container.Cursor = Cursor;
                break;
            }
        }