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(); }
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; } }
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); }
//移除选中层 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(); }
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); } }
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(); }
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(); }
/// <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); } } }
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(); } }
private void ApplyWheel(ILayoutHost host, CanvasEventArgs e) { if (e.WheelDelta > 0) { host.LayoutRuntime.Scale -= 0.1f; } else { host.LayoutRuntime.Scale += 0.1f; } host.Render(); }
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(); }
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(); }
//应用关注区域 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); } }
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); } }
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(); }
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(); }
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); } }
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(); }
private void Apply(ILayoutHost host, int offsetX, int offsetY) { host.LayoutRuntime.ApplyOffset(offsetX, offsetY); host.Render(); }
/// <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(); }
private void btnScale_Click(object sender, EventArgs e) { _host.LayoutRuntime.Scale = (float)numericUpDown1.Value / 100f; _host.Render(); }
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; } }