《GS软件设计》实习报告
m_array.Clear(); }
public int Count {
get {
return m_array.Count; } }
public IMap get_Item(int Index) {
if (Index > m_array.Count | Index < 0) throw new
Exception(\
return m_array[Index] as IMap; }
public void Remove(IMap Map) {
m_array.Remove(Map); }
public IMap Create() {
IMap newMap = new MapClass(); m_array.Add(newMap);
return newMap; }
public void Add(IMap Map) {
if (Map == null)
throw new Exception(\initialized!\
m_array.Add(Map); }
#endregion } }
两种视图的同步
在 3bxwMap.cs 中添加成员变量,即同步类对象:
private ControlsSynchronizer m_controlsSynchronizer = null;
在 Form1_Load 函数中进行初始化工作:
controls synchronization calss
m_controlsSynchronizer = new ControlsSynchronizer(m_mapControl, m_pageLayoutControl);
m_controlsSynchronizer.BindControls(true);
m_controlsSynchronizer.AddFrameworkControl(axToolbarControl1.Object); m_controlsSynchronizer.AddFrameworkControl(this.axTOCControl1.Object); OpenNewMapDocument openMapDoc = new
OpenNewMapDocument(m_controlsSynchronizer);
axToolbarControl1.AddItem(openMapDoc, -1, 0, false, -1, esriCommandStyles.esriCommandStyleIconOnly);
10
《GS软件设计》实习报告
打印功能
o. 添加打印菜单项。双击菜单项添加响应函数:
IHookHelper layout_hookHelper = new HookHelperClass(); layout_hookHelper.Hook = this.axPageLayoutControl1.Object; PrintPageLayoutForm PPLFrm =newPrintPageLayoutForm(layout_hookHelper); PPLFrm.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.Output; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Carto; namespace GIS {
public partial class PrintPageLayoutForm : Form {
public PrintPageLayoutForm(IHookHelper hookHelper) {
InitializeComponent();
axPageLayoutControl1.PageLayout = hookHelper.PageLayout; }
private void cmdPrint_Click(object sender, System.EventArgs e) {
if (axPageLayoutControl1.Printer != null) {
axPageLayoutControl1.MousePointer =
esriControlsMousePointer.esriPointerHourglass; IPrinter printer = axPageLayoutControl1.Printer; if (printer.Paper.Orientation !=axPageLayoutControl1.Page.Orientation) {
printer.Paper.Orientation = axPageLayoutControl1.Page.Orientation; UpdatePrintingDisplay(); }
axPageLayoutControl1.PrintPageLayout(Convert.ToInt16(txbStartPage.Tex
11
《GS软件设计》实习报告
t),Convert.ToInt16(txbEndPage.Text),Convert.ToDouble(txbOverlap.Text));
axPageLayoutControl1.MousePointer =
esriControlsMousePointer.esriPointerDefault;
MessageBox.Show(\打印图片保存成功!\保存\MessageBoxButtons.OK);
this.Close(); } }
private void PrintPageLayoutForm_Load(object sender, EventArgs e) {
cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.Items.Add(\ cboPageSize.SelectedIndex = 7;
cboPageToPrinterMapping.Items.Add(\ cboPageToPrinterMapping.Items.Add(\ cboPageToPrinterMapping.Items.Add(\ cboPageToPrinterMapping.SelectedIndex = 1; optPortrait.Checked = true; EnableOrientation(true); UpdatePrintingDisplay(); }
private void UpdatePrintPageDisplay() {
short iPageCount =
axPageLayoutControl1.get_PrinterPageCount(Convert.ToDouble(txbOverlap.Text));
lblPageCount.Text = iPageCount.ToString();
int iPageStart = Convert.ToInt32(txbStartPage.Text); int iPageEnd = Convert.ToInt32(txbEndPage.Text);
12
《GS软件设计》实习报告
if ((iPageStart < 1) | (iPageStart > iPageCount)) {
txbStartPage.Text = \ }
if ((iPageEnd < 1) | (iPageEnd > iPageCount)) {
txbEndPage.Text = iPageCount.ToString(); } }
private void UpdatePrintingDisplay() {
if (axPageLayoutControl1.Printer != null) {
IPrinter printer = axPageLayoutControl1.Printer;
if (printer.Paper.Orientation == 1) {
lblPrinterOrientation.Text = \横向\ } else {
lblPrinterOrientation.Text = \纵向\ }
lblPrinterName.Text = printer.Paper.PrinterName; double dWidth; double dheight;
printer.Paper.QueryPaperSize(out dWidth, out dheight); lblPrinterSize.Text = dWidth.ToString(\+ \by \ } }
private void txbOverlap_Leave(object sender, System.EventArgs e)
{
UpdatePrintPageDisplay(); UpdatePrintingDisplay();
} private void optLandscape_Click(object sender, System.EventArgs e) {
if (optLandscape.Checked == true) {
13
《GS软件设计》实习报告
if (axPageLayoutControl1.Page.FormID != esriPageFormID.esriPageFormSameAsPrinter) {
axPageLayoutControl1.Page.Orientation = 2; }
UpdatePrintPageDisplay(); UpdatePrintingDisplay(); } }
private void optPortrait_Click(object sender, System.EventArgs e)
{
if (optPortrait.Checked == true)
{ if (axPageLayoutControl1.Page.FormID != esriPageFormID.esriPageFormSameAsPrinter) {
axPageLayoutControl1.Page.Orientation = 1; }
UpdatePrintPageDisplay(); UpdatePrintingDisplay(); } }
private void cboPageSize_SelectedIndexChanged(object sender, EventArgs e)
{ if (cboPageSize.SelectedIndex == 13) EnableOrientation(false); else
EnableOrientation(true);
axPageLayoutControl1.Page.FormID = (esriPageFormID)cboPageSize.SelectedIndex; UpdatePrintPageDisplay(); UpdatePrintingDisplay(); }
private void EnableOrientation(bool b) {
optPortrait.Enabled = b; optLandscape.Enabled = b; }
private void cmdPrint_Click_1(object sender, EventArgs e)
{
14