123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Drawing;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using WWPipeLine.MapBasic.Conditions;
- using Sunny.UI;
- using WeifenLuo.WinFormsUI.Docking;
- using SuperMap.Mapping;
- using WWPipeLine.MapBasic;
- using SuperMap.Data.Conversion;
- using SuperMap.Data;
- using SuperMap.UI;
- using SuperMap.Layout;
- namespace WWPipeLine.MapTools.Conditions.ShuJuChuLi
- {
- public partial class OutPrintcj : ConditionPanel
- {
- private MapLayoutControl m_MapLayoutControl;
- private MapLayout m_MapLayout;
- private Point2D addPoint = new Point2D(0, 0);
- private Map m_Map;
- /// <summary>
- /// 纸张大小
- /// </summary>
- private PaperSize paperSize = PaperSize.A4;
- /// <summary>
- /// 纸张方向 Landscape横向 Portrait纵向
- /// </summary>
- private PaperOrientation paperOrientation = PaperOrientation.Landscape;
- public OutPrintcj()
- {
- this.ConditionPanelName = "裁剪区域打印";
- this.IsShowPanelFooter = false;
- this.SetSize(Screen.PrimaryScreen.Bounds.Width - 300, Screen.PrimaryScreen.Bounds.Height - 200);
- InitializeComponent();
- m_Map = MapControl.Map;
- foreach (Layer lyr in m_Map.Layers)
- {
- Layer PrintLayer = MapControl.Map.Layers.FindLayer(lyr.Name);
- if (PrintLayer is null) continue;
- lyr.IsVisible = PrintLayer.IsVisible;
- }
- m_Map.Workspace.Maps.SetMapXML(m_Map.Name, m_Map.ToXML());
- m_MapLayoutControl = new MapLayoutControl();
- m_MapLayoutControl.Dock = DockStyle.Fill;
- m_MapLayoutControl.MapLayout.Workspace = ComsStatic.Workspace;
- m_MapLayoutControl.IsHorizontalScrollbarVisible = false;
- m_MapLayoutControl.IsVerticalScrollbarVisible = false;
- uiPlayout.Controls.Add(m_MapLayoutControl);
- uiPlayout.Controls.SetChildIndex(m_MapLayoutControl, 0);
- }
- protected override void OnLoad(EventArgs e)
- {
- int index = MapControl.Map.TrackingLayer.IndexOf("ControlToolAddGeoRegion");
- if (index == -1)
- {
- Sunny.UI.UIMessageTip.ShowError("请先绘制打印区域");
- this.FindForm().Close(); return;
- }
- GeoRegion geo = MapControl.Map.TrackingLayer.Get(index) as GeoRegion;
- if (geo is null || geo.PartCount != 1)
- {
- ComsStatic.ShowErrorLog("绘制区域PartCount参数发生错误");
- this.FindForm().Close(); return;
- }
- m_MapLayout = m_MapLayoutControl.MapLayout;
- m_MapLayout.Paper.Grid = new GridSetting() { IsVisible = false };
- m_MapLayout.Paper.Size = paperSize;
- m_MapLayout.Paper.Orientation = paperOrientation;
- m_MapLayout.ZoomToPaper();
- GeoMap geoMap = new GeoMap();
- geoMap.MapName = m_Map.Name;
- geoMap.MapCenter = geo.InnerPoint;
- geoMap.MapScale = m_Map.Scale;
- Point2Ds ps = new Point2Ds();
- foreach (Point2D p in geo[0])
- {
- Point2D p1 = MapControl.Map.MapToLogical(p);
- ps.Add(new Point2D(p1.X * 10, p1.Y * 10));
- }
- geoMap.Shape = new GeoRegion(ps);
- m_MapLayout.Elements.AddNew(geoMap);
-
- foreach (String printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
- {
- toolStripCBdayinji.Items.Add(printer);
- }
- toolStripCBdayinji.SelectedIndex = 0;
- toolStripComboBoxPapersize.ComboBox.ValueMember = "sizekey";
- toolStripComboBoxPapersize.ComboBox.DisplayMember = "sizedesc";
- toolStripComboBoxPapersize.ComboBox.DataSource = ComsStatic.getPaperSize();
- }
- //public override bool ShowModal() { return true; }
- private int GetGeoMapID()
- {
- int mapID = -1;
- LayoutElements les = m_MapLayout.Elements;
- les.MoveFirst();
- while (!les.IsEOF)
- {
- if (les.GetGeometry().Type == GeometryType.GeoMap)
- {
- mapID = les.GetID(); break;
- }
- les.MoveNext();
- }
- return mapID;
- }
- private void toolStripButtonNorthArrow_Click(object sender, EventArgs e)
- {
- GeoNorthArrow geoNorthArrow = new GeoNorthArrow();
- geoNorthArrow.StyleType = NorthArrowStyleType.ArrowInsideCircle;
- geoNorthArrow.BindingGeoMapID = GetGeoMapID();
- geoNorthArrow.SetGeoReference(new Rectangle2D(addPoint, new Size2D(100, 100)));
- bool result = m_MapLayout.Elements.AddNew(geoNorthArrow);
- ComsStatic.ShowUIMessageTipOKorError(result, "添加指南针");
- }
- private void toolStripButtonScale_Click(object sender, EventArgs e)
- {
- GeoMapScale geoMapScale = new GeoMapScale(GetGeoMapID(), addPoint, 500, 20);
- geoMapScale.ScaleType = GeoMapScaleType.RailwayMidSplit;
- geoMapScale.ScaleUnit = Unit.Meter;
- geoMapScale.LeftDivisionCount = 4;
- geoMapScale.SegmentCount = 4;
- bool result = m_MapLayout.Elements.AddNew(geoMapScale);
- ComsStatic.ShowUIMessageTipOKorError(result, "添加比例尺");
- }
- private void toolSBLegend_Click(object sender, EventArgs e)
- {
- GeoLegend geoLegend = new GeoLegend(MapControl.Map.Name, MapControl.Map.Workspace);
- geoLegend.Center = addPoint;
- bool result = m_MapLayout.Elements.AddNew(geoLegend);
- ComsStatic.ShowUIMessageTipOKorError(result, "添加图例");
- }
- private void toolStripButton1_Click(object sender, EventArgs e)
- {
- if (string.IsNullOrEmpty(toolStripTextBoxBiaoti.Text))
- { Sunny.UI.UIMessageTip.ShowError("请先输入需要添加的标题内容"); return; }
- TextStyle textStyle = new TextStyle();
- textStyle.Alignment = SuperMap.Data.TextAlignment.TopCenter;
- textStyle.Bold = true;
- textStyle.IsSizeFixed = true;
- textStyle.FontHeight = 5.0;
- TextPart textPart = new TextPart(toolStripTextBoxBiaoti.Text, addPoint, 0);
- GeoText geoText = new GeoText(textPart, textStyle);
- bool result = m_MapLayout.Elements.AddNew(geoText);
- ComsStatic.ShowUIMessageTipOKorError(result, "添加标题内容");
- toolStripTextBoxBiaoti.Text = "";
- }
- private void toolStripButton2_Click(object sender, EventArgs e)
- {
- if (string.IsNullOrEmpty(toolStripTextBoxBiaozhu.Text))
- { Sunny.UI.UIMessageTip.ShowError("请先输入需要添加的标注内容"); return; }
- TextStyle textStyle = new TextStyle();
- textStyle.Alignment = SuperMap.Data.TextAlignment.TopCenter;
- textStyle.IsSizeFixed = true;
- textStyle.FontHeight = 3.0;
- TextPart textPart = new TextPart(toolStripTextBoxBiaozhu.Text, addPoint, 0);
- GeoText geoText = new GeoText(textPart, textStyle);
- bool result = m_MapLayout.Elements.AddNew(geoText);
- ComsStatic.ShowUIMessageTipOKorError(result, "添加标注内容");
- toolStripTextBoxBiaozhu.Text = "";
- }
- private void toolStripButtonPrint_Click(object sender, EventArgs e)
- {
- string printerName = toolStripCBdayinji.SelectedItem as String; //toolStripCBdayinji.ComboBox.SelectedValue
- if (string.IsNullOrEmpty(printerName)) { Sunny.UI.UIMessageTip.ShowError("请先选择打印机"); return; }
- Printer printer = m_MapLayout.Printer;
- printer.PaperSize = paperSize;
- printer.Orientation = paperOrientation;
- printer.PrinterName = printerName;
- if (printer.IsValidPrinter)
- {
- WaitingForm wf = new WaitingForm((obj, args) =>
- {
- m_MapLayout.Printer.Print();
- }, "正在打印,请等待!");
- wf.ShowDialog(this);
- ComsStatic.ShowOKLog("打印完成");
- }
- else
- {
- ComsStatic.ShowErrorLog("当前打印机\"" + printerName + "\"无法打印"); return;
- }
- }
- private void toolStripButtonZoomIn_Click(object sender, EventArgs e)
- {
- m_MapLayoutControl.LayoutAction = SuperMap.UI.Action.ZoomIn;
- }
- private void toolStripButtonZoomOut_Click(object sender, EventArgs e)
- {
- m_MapLayoutControl.LayoutAction = SuperMap.UI.Action.ZoomOut;
- }
- private void toolStripButtonPan_Click(object sender, EventArgs e)
- {
- m_MapLayoutControl.LayoutAction = SuperMap.UI.Action.Pan;
- }
- private void toolStripComboBoxPapersize_SelectedIndexChanged(object sender, EventArgs e)
- {
- string sizeStr = toolStripComboBoxPapersize.ComboBox.SelectedValue.ToString();
- paperSize = ComsStatic.getPaperSize(sizeStr);
- m_MapLayout.Paper.Size = paperSize;
- m_MapLayout.ZoomToPaper();
- addPoint = new Point2D(m_MapLayout.Paper.Margin.Left, ComsStatic.StringToInt(m_MapLayout.Paper.Height) - m_MapLayout.Paper.Margin.Top - m_MapLayout.Paper.Margin.Bottom);
- }
- private void toolStripButtonQuantu_Click(object sender, EventArgs e)
- {
- m_MapLayout.Paper.Size = paperSize;
- m_MapLayout.ZoomToPaper();
- }
- }
- }
|