《GS软件设计》实习报告
}
private void cboPageToPrinterMapping_Click(object sender, EventArgs e) {
axPageLayoutControl1.Page.PageToPrinterMapping = (esriPageToPrinterMapping)cboPageToPrinterMapping.SelectedIndex; UpdatePrintPageDisplay(); UpdatePrintingDisplay(); } } }
地图输出功能
p. 添加导出地图菜单项。双击菜单项添加响应函数:
IHookHelper layout_hookHelper = new HookHelperClass(); layout_hookHelper.Hook = this.axPageLayoutControl1.Object ExportMapForm EMFrm = new ExportMapForm(layout_hookHelper); EMFrm.ShowDialog(); 新建Windows窗体:
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;
using System.Windows.Forms; using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Output; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Geometry;
using System.Text.RegularExpressions; using ESRI.ArcGIS.Controls;
namespace _bxwMap {
public partial class ExportMapForm : Form {
15
《GS软件设计》实习报告
private double pWidth, pHeight;
private IActiveView pActiveView = null;
public ExportMapForm(IHookHelper hookHelper) {
InitializeComponent();
pActiveView = hookHelper.ActiveView; }
private void btnSave_Click(object sender, EventArgs e) {
this.saveFileDialog1.ShowDialog();
this.txtFileName.Text = saveFileDialog1.FileName; }
private void cmdOK_Click(object sender, EventArgs e) {
this.Cursor = Cursors.WaitCursor; if (!IsNumbericA(txtWidth.Text)) {
MessageBox.Show(\请输入数字!\错误\MessageBoxButtons.OK, MessageBoxIcon.Error); txtWidth.Focus(); return; }
if (!IsNumbericA(txtHeight.Text)) {
MessageBox.Show(\请输入数字!\错误\MessageBoxButtons.OK, MessageBoxIcon.Error); txtHeight.Focus(); return; }
if (txtResolution.Value > 1) {
ExportTool(); }
this.Cursor = Cursors.Default; }
private void ExportTool() {
IExport pExport = null;
IWorldFileSettings pWorldFile = null; IExportImage pExportType;
IEnvelope pDriverBounds = null;
ESRI.ArcGIS.Display.tagRECT userRECT = new
16
《GS软件设计》实习报告
ESRI.ArcGIS.Display.tagRECT();
IEnvelope pEnv = new EnvelopeClass(); int lResolution;
lResolution = Convert.ToInt32(this.txtResolution.Value); switch
(this.saveFileDialog1.Filter.ToString().Trim().Substring(0, 3)) {
case \
pExport = new ExportJPEGClass(); break; case \
pExport = new ExportBMPClass(); break; case \
pExport = new ExportGIFClass(); break; case \
pExport = new ExportTIFFClass(); break; case \
pExport = new ExportPNGClass(); break; case \
pExport = new ExportEMFClass(); break; case \
pExport = new ExportPDFClass(); break; case \
pExport = new ExportAIClass(); break; case \
pExport = new ExportSVGClass(); break; default:
pExport = new ExportJPEGClass(); break; }
if (this.txtFileName.Text.ToString().Trim() != \ {
if
(System.IO.File.Exists(this.txtFileName.Text.ToString()) == true) {
17
《GS软件设计》实习报告
MessageBox.Show(\该文件已经存在,请重新命名!\ this.txtFileName.Text = \ this.txtFileName.Focus(); } else {
pExport.ExportFileName = this.txtFileName.Text; pExport.Resolution = lResolution;
pExportType = pExport as IExportImage; pExportType.ImageType =
esriExportImageType.esriExportImageTypeTrueColor; pEnv = pActiveView.Extent;
pWorldFile = (IWorldFileSettings)pExport; pWorldFile.MapExtent = pEnv;
pWorldFile.OutputWorldFile = false; userRECT.top = 0; userRECT.left = 0;
userRECT.right = Convert.ToInt32(pWidth); userRECT.bottom = Convert.ToInt32(pHeight); pDriverBounds = new EnvelopeClass(); pDriverBounds.PutCoords(userRECT.top, userRECT.bottom, userRECT.right, userRECT.top);
pExport.PixelBounds = pDriverBounds;
ITrackCancel pTrackCancel = new TrackCancelClass(); pActiveView.Output(pExport.StartExporting(), lResolution, ref userRECT, pActiveView.Extent, pTrackCancel); pExport.FinishExporting();
MessageBox.Show(\打印图片保存成功!\保存\MessageBoxButtons.OK);
this.Close(); }
} else {
MessageBox.Show(\请保存文件!\ } }
private void showWH(double pW, double pH) {
pWidth = Convert.ToDouble((pW / 2.54) * Convert.ToDouble(txtResolution.Value));
pHeight = Convert.ToDouble((pH / 2.54) * Convert.ToDouble(txtResolution.Value));
18
《GS软件设计》实习报告
if (this.radioButton1.Checked == true) {
this.txtWidth.Text = Convert.ToDouble(pW / 2.54).ToString(\
this.txtHeight.Text = Convert.ToDouble(pH / 2.54).ToString(\ }
else if (this.radioButton2.Checked == true) {
this.txtWidth.Text = pW.ToString(\ this.txtHeight.Text = pH.ToString(\ } else {
this.txtWidth.Text = pW.ToString(\ this.txtHeight.Text = pH.ToString(\ } }
#region 通用函数
private bool IsNumbericA(string v) {
return ((this.IsIntegerA(v)) || (this.IsFloatA(v))); }
private bool IsFloatA(string v) {
string pattern = @\ Regex reg = new Regex(pattern); return reg.IsMatch(v); }
private bool IsIntegerA(string v) {
string pattern = @\ Regex reg = new Regex(pattern); return reg.IsMatch(v); }
#endregion
private void frmResource_FormClosing(object sender, FormClosingEventArgs e) {
if (e.CloseReason == CloseReason.UserClosing) {
e.Cancel = true; this.Hide();
19