C# GIS二次开发代码1

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

给 QueryFrm 注册 load 事件,在 load 事件中确定窗体的位置 private void QueryFrm_Load(object sender, EventArgs e) { //获取屏幕大小 string width = SystemInformation.WorkingArea.Width.ToString(); string height = SystemInformation.WorkingArea.Height.ToString(); //定位,将窗体显示在右上的位置 int iWidth = Convert.ToInt32(width); int iHeight = Convert.ToInt32(height); this.Top = iHeight / 10; this.Left = iWidth / 7 * 6; } 将其 Text 改为 Query,将 MaximizeBox 和 MinimizeBox 属性改为 false, 即取消最大化,最小化按钮。 在 MainFrm 类中添加静态变量 public static int type; 在窗体加载代码中将 type 赋值为 0; 在 QueryFrm 中,给 btnOK 注册单击事件 private void btnOK_Click(object sender, EventArgs e) { if (rdoNormol.Checked) MainFrm. type =0; else if (rdoLine.Checked) MainFrm. type =1; else if (rdoEnvo.Checked) MainFrm. type =2; else if (rdoCircle.Checked) MainFrm. type =3; else MainFrm. type =4; } 属性显示窗口界面
1.3
UI 设计的代码
功能描述:通过代码给控件定位 给主窗体注册load事件,具体代码如下: private void MainFrm_Load(object sender, EventArgs e) { //确定相对位置 //确定每个控件的top、left、width、height //定位过程中使用相对大小,可以保证美观 toolGIS.Top = 25; toolGIS.Left = 5; toolGIS.Width = this.Width - 25; tocGIS.Top = toolGIS.Top + 30; tocGIS.Left = toolGIS.Left; tocGIS.Width = this.Width/4; tocGIS.Height = this.Height - toolGIS.Height - 70 - statusStrip.Height; mapGIS.Top = tocGIS.Top; mapGIS.Left = tocGIS.Left + tocGIS.Width + 3; mapGIS.Width = toolGIS.Width - tocGIS.Width - 3; mapGIS.Height = tocGIS.Height; } 功能描述:实现窗体重绘后控件相对位置不变 给MainFrm注册Resize事件,具体代码如下: private void MainFrm_Resize(object sender, EventArgs e) { toolGIS.Top = 25; toolGIS.Left = 5; toolGIS.Width = this.Width - 25; tocGIS.Top = toolGIS.Top + 30; tocGIS.Left = toolGIS.Left; tocGIS.Width = this.Width / 4; tocGIS.Height = this.Height - toolGIS.Height - 70 - statusStrip.Height; mapGIS.Top = tocGIS.Top;
GIS 开发与应用
1. 程序总体框架
1.1 总体界面设计与所需控件
新建 wimform 窗体应用程序,主窗体 Name 为 MainFrm,在主窗体中添加控件,如下 控件名 MenuStrip ToolbarControl TOCControl MapControl LicenseControl StatusStrip 名称 menuStrip toolGIS tocGIS mapGIS 默认 statusStrip 备注 菜单栏 菜单下方的控件 左边包含 map 的控件 右边最大的控件 未显示 最下方的状态栏
2. 地图保存
在 menu 中添加 File,在 File 的中添加 Export Data,Name 为 exportDataMenu, 为其添加单击事件,代码如下 private void exportDataMenu_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); //设置可以保存的文件类型 sfd.Filter = "TIF FIles(*.TIF)|*.TIF|SVG FIles(*.SVG)|*.SVG|PNG FIles(*.PNG)|*.PNG|PDF FIles(*.PDF)|*.PDF|JPEG FIles(*.JPEG)|*.JPEG|GIF FIles(*.GIF)|*.GIF|EMF FIles(*.EMF)|*.EMF|BMP FIles(*.BMP)|*.BMP|AI FIles(*.AI)|*.AI"; //显示对话框 sfd.ShowDialog(); //判断路径为空,返回 if (sfd.FileName == null) return; //获取保存文件路径 string path = sfd.FileName; string pathExtention = System.IO.Path.GetExtension(path); try { ESRI.ArcGIS.Output.IExport pExport; pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportTIFF(); //根据文件拓展名选择保存的格式 switch (pathExtention) { case ".SVG": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportSVG(); break; case ".PS": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportPS(); break; case ".PNG": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportPNG();
1.2
基础设置
给 toolGIS 添加 item。在右键属性中添加,具体如上图所示。 给 toolGIS 设置 buddy 为 mapGIS。 给 tocGIS 设置 buddy 为 mapGIS。 可以自行给上述三个控件添加样式。
给 Form1 重命名为 MainFrm,text 为 GIS 在构造函数中添加如下代码: ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
ESRI.ArcGIS.Display.CancelTracker pCancel = new ESRI.ArcGIS.Display.CancelTracker(); mapGIS.ActiveView.Output(pExport.StartExporting(), (int)pScreenResolution, ref pExportFrame, mapGIS.ActiveView.Extent, pCancel); pExport.FinishExporting(); } catch //()Exception ex { } }
mapGIS.Left = tocGIS.Left + tocGIS.Width + 3; mapGIS.Width = toolGIS.Width - tocGIS.Width - 3; mapGIS.Height = tocGIS.Height; } 给mainFrm的windowstate属性设置为Maximized,即窗口的初始可视化状态为最大化
3. 地图的空间查询
添加一个窗体,Name 为 QueryFrm。
源自文库
在该窗体中添加控件,具体添加控件如下 空间名 GroupBox(Panel) 5 个 RadioButton Name groupBox rdoNormol rdoLine rdoEnvo rdoCircle rdoPoly Button btnOK 备注 一个容器,可以自行选择 Text 属性为:默认状态 Text 属性为:线选查询 Text 属性为:框选查询 Text 属性为:圆选查询 Text 属性为:多边形查询 Text 属性为:确定
break; case ".PDF": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportPDF(); break; case ".JPEG": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportJPEG(); break; case ".GIF": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportGIF(); break; case ".EMF": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportEMF(); break; case ".BMP": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportBMP(); break; case ".AI": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportAI(); break; }//end switch //获取图片的分辨率(即为MapGIS控件的分辨率) double pScreenResolution = mapGIS.ActiveView.ScreenDisplay.DisplayTransformation.Resolution; //将分辨率传给输出 pExport.Resolution = pScreenResolution; //将文件地址传给输出 pExport.ExportFileName = path; //定义四边形 ESRI.ArcGIS.esriSystem.tagRECT pExportFrame; //通过四边形选择要保存的区域 pExportFrame = mapGIS.ActiveView.ExportFrame; //定义一个Envolope ESRI.ArcGIS.Geometry.Envelope pEnv = new ESRI.ArcGIS.Geometry.Envelope(); //定义四边形的相对位置 pEnv.PutCoords(pExportFrame.left, pExportFrame.bottom, pExportFrame.right, pExportFrame.top); pExport.PixelBounds = (ESRI.ArcGIS.Geometry.IEnvelope)pEnv;
相关文档
最新文档