PageSetClass.cs 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132
  1. //======================================================================
  2. //
  3. //
  4. //
  5. // CLR 版本: 4.0.30319.1
  6. // 命名空间: Tofly.OutputUI.Win
  7. // 类 名: PageSetClass
  8. // 创 建 人: 徐 健
  9. // 创建时间: 2013/04/28 20:07:14
  10. // 修 改 人:
  11. // 修改时间:
  12. //
  13. //======================================================================
  14. using System;
  15. using Tofly.Core.Stereotype;
  16. using Tofly.CoreUI.Message;
  17. using Tofly.OutputUI.Form;
  18. using Tofly.Core.Context.Support;
  19. using Tofly.GISUI.Controls;
  20. using System.Collections.Generic;
  21. using System.Drawing.Printing;
  22. using System.Data;
  23. using System.Management;
  24. using Tofly.GIS.Carto;
  25. using Tofly.GIS;
  26. using Tofly.GIS.Geometry;
  27. using Tofly.GIS.Display;
  28. using System.Drawing;
  29. namespace Tofly.OutputUI
  30. {
  31. /// <summary>
  32. /// 页面设置实现类
  33. /// </summary>
  34. [Component(IsSingleton = "false", Name = "PageSetClass")]
  35. public class PageSetClass : IPageSet
  36. {
  37. #region 构造
  38. private IPageSetForm pPageSetForm;
  39. private IPageLayoutControl pPageLayoutControl;
  40. private Dictionary<int, int> m_PaperFormID = new Dictionary<int, int>();
  41. private double m_MaxWidth;//宽度阈值(厘米)
  42. private double m_MaxHeight;//高度阈值(厘米)
  43. private Units m_CurrentUnit;//当前的单位
  44. private short m_lOldFormID;//打印机使用的纸张
  45. private int m_iOldPaperOrientation;
  46. private string m_oldPrinterName = "";
  47. public PageSetClass()
  48. {
  49. pPageSetForm = ContextRegistry.GetContext().GetObject("PageSetForm") as IPageSetForm;
  50. pPageSetForm.PaperCombox.SelectedIndexChangedEvent += new CoreUI.Control.DataListSelectChanged(PaperCombox_SelectedIndexChangedEvent);
  51. pPageSetForm.PrinterPaperCheck.CheckedChangedEvent += new CoreUI.Control.EventHandler(PrinterPaperCheck_CheckedChangedEvent);
  52. pPageSetForm.PrinterNameCombox.SelectedIndexChangedEvent += new CoreUI.Control.DataListSelectChanged(PrinterNameCombox_SelectedIndexChangedEvent);
  53. pPageSetForm.StretchGraphicsCheck.CheckedChangedEvent += new CoreUI.Control.EventHandler(StretchGraphicsCheck_CheckedChangedEvent);
  54. pPageSetForm.PrintableAreaCheck.CheckedChangedEvent += new CoreUI.Control.EventHandler(PrintableAreaCheck_CheckedChangedEvent);
  55. pPageSetForm.UnitsCombox.SelectedIndexChangedEvent += new CoreUI.Control.DataListSelectChanged(UnitsCombox_SelectedIndexChangedEvent);
  56. pPageSetForm.LocationRadio1.SelectedIndexChangedEvent += new CoreUI.Control.DataListSelectChanged(LocationRadio1_SelectedIndexChangedEvent);
  57. pPageSetForm.LocationRadio2.SelectedIndexChangedEvent += new CoreUI.Control.DataListSelectChanged(LocationRadio2_SelectedIndexChangedEvent);
  58. pPageSetForm.HeightSpin.TextChangedEvent += new CoreUI.Control.ValueChangedEventHandler(HeightSpin_TextChangedEvent);
  59. pPageSetForm.WidthSpin.TextChangedEvent += new CoreUI.Control.ValueChangedEventHandler(WidthSpin_TextChangedEvent);
  60. pPageSetForm.PictureControl.PaintEvent += new CoreUI.Control.PaintHandle(PictureControl_PaintEvent);
  61. pPageSetForm.OKButton.ClickEvent += new CoreUI.Control.EventHandler(OKButton_ClickEvent);
  62. pPageSetForm.ExitButton.ClickEvent += new CoreUI.Control.EventHandler(ExitButton_ClickEvent);
  63. pPageSetForm.FormIDCombox.SelectedIndexChangedEvent += new CoreUI.Control.DataListSelectChanged(FormIDCombox_SelectedIndexChangedEvent);
  64. }
  65. #endregion
  66. #region IPageSet 成员
  67. public IPageSetForm PageSetForm
  68. {
  69. get { return pPageSetForm; }
  70. }
  71. public IPageLayoutControl PageLayoutControl
  72. {
  73. set { pPageLayoutControl = value; }
  74. }
  75. public bool InitForm()
  76. {
  77. try
  78. {
  79. if (pPageLayoutControl == null) return false;
  80. if (pPageLayoutControl.Printer == null)
  81. {
  82. MessageManager.Show("没有可用的打印设备", "提示");
  83. return false;
  84. }
  85. if (pPageLayoutControl.Printer.Paper != null)
  86. {
  87. m_oldPrinterName = pPageLayoutControl.Printer.Paper.PrinterName;
  88. m_lOldFormID = pPageLayoutControl.Printer.Paper.FormID;
  89. m_iOldPaperOrientation = pPageLayoutControl.Printer.Paper.Orientation;
  90. InitPrinter();
  91. InitPage();
  92. optPageDerectionChange();
  93. }
  94. return true;
  95. }
  96. catch (Exception)
  97. {
  98. MessageManager.Show("没有可用的打印设备", "提示");
  99. return false;
  100. }
  101. }
  102. #endregion
  103. #region 窗体控件事件
  104. void PaperCombox_SelectedIndexChangedEvent(object sender, object data)
  105. {
  106. int iIndex = pPageSetForm.PaperCombox.SelectedIndex;
  107. int iFormID;
  108. m_PaperFormID.TryGetValue(iIndex, out iFormID);
  109. IPaper pPaper = pPageLayoutControl.Printer.Paper;
  110. if (iFormID == pPaper.FormID)
  111. {
  112. return;
  113. }
  114. else
  115. {
  116. pPaper.FormID = (short)iFormID;
  117. object obj1 = new object();
  118. PrinterPaperCheck_CheckedChangedEvent(obj1);
  119. pPageSetForm.PictureControl.Refresh();
  120. }
  121. }
  122. void PrinterPaperCheck_CheckedChangedEvent(object sender)
  123. {
  124. PageSamePrinter(pPageSetForm.PrinterPaperCheck.Checked);
  125. IPrinter pPrinter = pPageLayoutControl.Printer;
  126. IPage pPage = pPageLayoutControl.Page;
  127. pPrinter.QueryPaperSize(out m_MaxWidth, out m_MaxHeight);//打印纸张
  128. m_MaxWidth = m_MaxWidth * OutputCommon.GetUnitScale(pPrinter.Units);//换算为厘米
  129. m_MaxHeight = m_MaxHeight * OutputCommon.GetUnitScale(pPrinter.Units);
  130. if (pPageSetForm.PrinterPaperCheck.Checked)
  131. {
  132. pPageSetForm.WidthSpin.Value = (decimal)Math.Round(m_MaxWidth, 2);
  133. pPageSetForm.HeightSpin.Value = (decimal)Math.Round(m_MaxHeight, 2);
  134. pPageSetForm.LocationRadio2.SelectedIndex = pPageSetForm.LocationRadio1.SelectedIndex;
  135. m_CurrentUnit = Units.Centimeters;
  136. pPageSetForm.UnitsCombox.Text = "厘米";
  137. }
  138. else
  139. {
  140. double dwidth = 0;
  141. double dheight = 0;
  142. dwidth = Convert.ToDouble(pPageSetForm.WidthSpin.Value) * OutputCommon.GetUnitScale(GetUnit());//换算为厘米
  143. dheight = Convert.ToDouble(pPageSetForm.HeightSpin.Value) * OutputCommon.GetUnitScale(GetUnit());//换算为厘米
  144. if (pPageSetForm.LocationRadio2.SelectedIndex == 0)
  145. {
  146. pPageSetForm.FormIDCombox.SelectedIndex = GetPageFormID(dwidth, dheight);
  147. }
  148. else
  149. {
  150. pPageSetForm.FormIDCombox.SelectedIndex = GetPageFormID(dheight, dwidth);
  151. }
  152. }
  153. pPageSetForm.PictureControl.Refresh();
  154. }
  155. void PrinterNameCombox_SelectedIndexChangedEvent(object sender, object data)
  156. {
  157. if (pPageSetForm.PrinterNameCombox.Text.ToString() == "")
  158. {
  159. return;
  160. }
  161. if (pPageSetForm.PrinterNameCombox.Text.ToString() == pPageLayoutControl.Printer.Paper.PrinterName)
  162. {
  163. SetPrinterAtti();
  164. initCombPaper();
  165. return;
  166. }
  167. else
  168. {
  169. SetPrinter(pPageSetForm.PrinterNameCombox.Text.ToString());
  170. initCombPaper();
  171. SetPrinterAtti();
  172. }
  173. pPageSetForm.PictureControl.Refresh();
  174. }
  175. void PrintableAreaCheck_CheckedChangedEvent(object sender)
  176. {
  177. pPageSetForm.PictureControl.Refresh();
  178. }
  179. void StretchGraphicsCheck_CheckedChangedEvent(object sender)
  180. {
  181. pPageLayoutControl.Page.StretchGraphicsWithPage = pPageSetForm.StretchGraphicsCheck.Checked;
  182. pPageSetForm.PictureControl.Refresh();
  183. }
  184. void UnitsCombox_SelectedIndexChangedEvent(object sender, object data)
  185. {
  186. Units pOldUnit = m_CurrentUnit;
  187. //获得选择的单位
  188. if (pPageSetForm.UnitsCombox.Text.IndexOf("点") != -1)
  189. {
  190. m_CurrentUnit = Units.Points;
  191. }
  192. else if (pPageSetForm.UnitsCombox.Text.IndexOf("毫米") != -1)
  193. {
  194. m_CurrentUnit = Units.Millimeters;
  195. }
  196. else if (pPageSetForm.UnitsCombox.Text.IndexOf("英寸") != -1)
  197. {
  198. m_CurrentUnit = Units.Inches;
  199. }
  200. else
  201. m_CurrentUnit = Units.Centimeters;
  202. //换算阈值
  203. m_MaxWidth = Math.Round(m_MaxWidth * OutputCommon.GetUnitScale(pOldUnit) / OutputCommon.GetUnitScale(m_CurrentUnit), 2);
  204. m_MaxHeight = Math.Round(m_MaxHeight * OutputCommon.GetUnitScale(pOldUnit) / OutputCommon.GetUnitScale(m_CurrentUnit), 2);
  205. //更新显示
  206. pPageSetForm.WidthSpin.Text = m_MaxWidth.ToString();
  207. pPageSetForm.HeightSpin.Text = m_MaxHeight.ToString();
  208. }
  209. void LocationRadio2_SelectedIndexChangedEvent(object sender, object data)
  210. {
  211. optPageDerectionChange();
  212. }
  213. void LocationRadio1_SelectedIndexChangedEvent(object sender, object data)
  214. {
  215. if (pPageSetForm.LocationRadio1.SelectedIndex == 0)
  216. pPageLayoutControl.Printer.Paper.Orientation = 1;
  217. else
  218. pPageLayoutControl.Printer.Paper.Orientation = 2;
  219. if (pPageSetForm.PrinterPaperCheck.Checked)//使用打印机纸张,设置页面尺寸
  220. {
  221. pPageSetForm.LocationRadio2.SelectedIndex = pPageSetForm.LocationRadio1.SelectedIndex;
  222. }
  223. // 更新显示
  224. pPageSetForm.PictureControl.Refresh();
  225. }
  226. void WidthSpin_TextChangedEvent(object value)
  227. {
  228. if (pPageSetForm.FormIDCombox.Text == "自定义")
  229. {
  230. pPageSetForm.PictureControl.Refresh();
  231. }
  232. }
  233. void HeightSpin_TextChangedEvent(object value)
  234. {
  235. if (pPageSetForm.FormIDCombox.Text == "自定义")
  236. {
  237. pPageSetForm.PictureControl.Refresh();
  238. }
  239. }
  240. void ExitButton_ClickEvent(object sender)
  241. {
  242. //恢复参数
  243. if (pPageLayoutControl.Printer != null)
  244. {
  245. if (m_oldPrinterName == pPageLayoutControl.Printer.Paper.PrinterName)
  246. {
  247. if (pPageLayoutControl.Printer.Paper.FormID != m_lOldFormID)
  248. {
  249. pPageLayoutControl.Printer.Paper.FormID = m_lOldFormID;
  250. }
  251. if (pPageLayoutControl.Printer.Paper.Orientation != (short)m_iOldPaperOrientation)
  252. {
  253. pPageLayoutControl.Printer.Paper.Orientation = (short)m_iOldPaperOrientation;
  254. }
  255. }
  256. else
  257. {
  258. if (m_oldPrinterName != "")
  259. {
  260. SetPrinter(m_oldPrinterName);
  261. pPageLayoutControl.Printer.Paper.FormID = m_lOldFormID;
  262. pPageLayoutControl.Printer.Paper.Orientation = (short)m_iOldPaperOrientation;
  263. }
  264. }
  265. }
  266. pPageSetForm.Close();
  267. }
  268. void OKButton_ClickEvent(object sender)
  269. {
  270. //调整页面参数
  271. IPage pPage = pPageLayoutControl.Page;
  272. pPage.Units = m_CurrentUnit; //页面单位
  273. //其他项目
  274. if (pPageSetForm.PrinterPaperCheck.Checked)
  275. {
  276. pPage.PutCustomSize(Convert.ToDouble(pPageSetForm.WidthSpin.Value), Convert.ToDouble(pPageSetForm.HeightSpin.Value));//页面尺寸
  277. pPage.FormID = PageFormID.PageFormSameAsPrinter; //当前页面使用的ID
  278. }
  279. else
  280. {
  281. pPage.FormID = (PageFormID)pPageSetForm.FormIDCombox.SelectedIndex; //当前页面使用的ID
  282. if (pPage.FormID == PageFormID.PageFormCUSTOM)
  283. {
  284. pPage.PutCustomSize((double)(pPageSetForm.WidthSpin.Value), (double)(pPageSetForm.HeightSpin.Value));//页面尺寸
  285. }
  286. if (pPageSetForm.LocationRadio2.SelectedIndex == 0)
  287. pPage.Orientation = 1;//纵向
  288. else
  289. pPage.Orientation = 2;//横向
  290. }
  291. //页面尺寸变化时是否缩放元素
  292. pPage.StretchGraphicsWithPage = false;// chkStretchGraphics.Checked;
  293. pPage.IsPrintableAreaVisible = pPageSetForm.PrintableAreaCheck.Checked;//是否显示打印边线
  294. pPageSetForm.Close();
  295. }
  296. void PictureControl_PaintEvent(CoreUI.Control.ControlPaintEventArgs e)
  297. {
  298. ITransformation pTransformation;
  299. TagRECT pRect = new TagRECT();
  300. int dGap = 4;
  301. pRect.top = (int)dGap;
  302. pRect.left = (int)dGap;
  303. pRect.bottom = pPageSetForm.PictureControl.Height - dGap;
  304. pRect.right = pPageSetForm.PictureControl.Width - dGap;
  305. e.Graphics.Clear(Color.White);
  306. Color pPageColor = pPageSetForm.ColorLabel2.ForeColor;
  307. Color pPaperColor = pPageSetForm.ColorLabel1.ForeColor;
  308. Color pMapFrameColor = pPageSetForm.ColorLabel0.ForeColor;
  309. //重新计算设备范围
  310. IEnvelope pMapEnv = null;
  311. IEnvelope pPaperEnv = null;
  312. IPrinter pPrinter = null;
  313. IElement pMapFrame = null;
  314. IGraphicsContainer pGC = pPageLayoutControl.ActiveView as IGraphicsContainer;
  315. // 页面范围
  316. IEnvelope pPageEnv = ContextRegistry.GetContext().GetObject("GIS_Envelope") as IEnvelope;
  317. pPageEnv.PutCoords(0, 0, Convert.ToDouble(pPageSetForm.WidthSpin.Value) * OutputCommon.GetUnitScale(m_CurrentUnit),
  318. Convert.ToDouble(pPageSetForm.HeightSpin.Value) * OutputCommon.GetUnitScale(m_CurrentUnit));
  319. // 地图框范围
  320. pMapFrame = pGC.FindFrame(pPageLayoutControl.ActiveView.FocusMap as object) as IElement;
  321. if (pMapFrame != null)
  322. {
  323. pMapEnv = ContextRegistry.GetContext().GetObject("GIS_Envelope") as IEnvelope;
  324. pMapFrame.QueryBounds(pPageLayoutControl.ActiveView.ScreenDisplay as IDisplay, pMapEnv);
  325. //换算为厘米
  326. pMapEnv.XMin = pMapEnv.XMin * OutputCommon.GetUnitScale(pPageLayoutControl.Page.Units);
  327. pMapEnv.XMax = pMapEnv.XMax * OutputCommon.GetUnitScale(pPageLayoutControl.Page.Units);
  328. pMapEnv.YMax = pMapEnv.YMax * OutputCommon.GetUnitScale(pPageLayoutControl.Page.Units);
  329. pMapEnv.YMin = pMapEnv.YMin * OutputCommon.GetUnitScale(pPageLayoutControl.Page.Units);
  330. }
  331. // 打印纸张范围
  332. if (pPageLayoutControl.Printer != null)
  333. {
  334. double dWidth;
  335. double dHeight;
  336. pPrinter = pPageLayoutControl.Printer;
  337. if (pPageSetForm.PrinterPaperCheck.Checked)//页面使用打印纸张
  338. {
  339. if (pPageSetForm.PrintableAreaCheck.Checked)
  340. {
  341. pPaperEnv = pPrinter.PrintableBounds;//可打印尺寸
  342. dWidth = pPaperEnv.Width;
  343. dHeight = pPaperEnv.Height;
  344. double dxmin = pPaperEnv.XMin;
  345. double dxmax = pPaperEnv.XMax;
  346. double dymin = pPaperEnv.YMin;
  347. double dymax = pPaperEnv.YMax;
  348. dxmin = dxmin * OutputCommon.GetUnitScale(pPrinter.Units);
  349. dxmax = dxmax * OutputCommon.GetUnitScale(pPrinter.Units);
  350. dymin = dymin * OutputCommon.GetUnitScale(pPrinter.Units);
  351. dymax = dymax * OutputCommon.GetUnitScale(pPrinter.Units);
  352. pPaperEnv = null;
  353. pPaperEnv = ContextRegistry.GetContext().GetObject("GIS_Envelope") as IEnvelope;
  354. pPaperEnv.PutCoords(dxmin, dymin, dxmax, dymax);
  355. }
  356. else
  357. {
  358. pPaperEnv = null;
  359. }
  360. }
  361. else
  362. {
  363. pPrinter.QueryPaperSize(out dWidth, out dHeight);
  364. dWidth = dWidth * OutputCommon.GetUnitScale(pPrinter.Units);
  365. dHeight = dHeight * OutputCommon.GetUnitScale(pPrinter.Units);
  366. pPaperEnv = ContextRegistry.GetContext().GetObject("GIS_Envelope") as IEnvelope;
  367. pPaperEnv.PutCoords(0, 0, dWidth, dHeight);
  368. }
  369. }
  370. //所要画的最大范围
  371. IEnvelope pFullEnv = ContextRegistry.GetContext().GetObject("GIS_Envelope") as IEnvelope;
  372. if (pPageEnv != null)
  373. pFullEnv = pFullEnv.Union(pPageEnv) as IEnvelope;
  374. if (pMapEnv != null)
  375. pFullEnv = pFullEnv.Union(pMapEnv) as IEnvelope;
  376. if (pPaperEnv != null)
  377. pFullEnv = pFullEnv.Union(pPaperEnv) as IEnvelope;
  378. double dx = 0;
  379. double dy = 0;
  380. if (!pFullEnv.IsEmpty)
  381. {
  382. double dScaleX = (pRect.right - pRect.left) / pFullEnv.Width;
  383. double dScaleY = (pRect.bottom - pRect.top) / pFullEnv.Height;
  384. if (dScaleX > dScaleY)//获得最佳缩放比例和位移
  385. {
  386. dScaleX = dScaleY;
  387. dx = ((pRect.right - pRect.left) - pFullEnv.Width * dScaleX) / 2.00;
  388. }
  389. else
  390. dy = ((pRect.bottom - pRect.top) - pFullEnv.Height * dScaleY) / 2.00;
  391. pTransformation = OutputCommon.CreateTransFromDC(e.Graphics, pRect.right - pRect.left, pRect.bottom - pRect.top);
  392. ISymbol pSymbol;
  393. IEnvelope pEnvelope;
  394. //画焦点地图框
  395. if (pMapEnv != null)
  396. {
  397. //计算地图框范围
  398. pEnvelope = ContextRegistry.GetContext().GetObject("GIS_Envelope") as IEnvelope;
  399. pEnvelope.XMin = pMapEnv.XMin * dScaleX;
  400. pEnvelope.XMax = pMapEnv.XMax * dScaleX;
  401. pEnvelope.YMin = pMapEnv.YMin * dScaleY;
  402. pEnvelope.YMax = pMapEnv.YMax * dScaleY;
  403. pEnvelope.Offset(dx, dy);
  404. Image image = Properties.Resources.MapElements1;
  405. e.Graphics.DrawImage(image, (float)pEnvelope.XMin, (float)pEnvelope.YMin, (float)pEnvelope.Width, (float)pEnvelope.Height);
  406. pEnvelope = null;
  407. }
  408. //画页面布局
  409. if (pPageEnv != null)
  410. {
  411. //创建符号
  412. pSymbol = OutputCommon.CreateSimpleFillSym(pPageColor, SimpleFillStyle.Null, pPageColor, SimpleLineStyle.Solid, 0.2);
  413. //计算页面范围
  414. pEnvelope = ContextRegistry.GetContext().GetObject("GIS_Envelope") as IEnvelope;
  415. pEnvelope.XMin = pPageEnv.XMin * dScaleX;
  416. pEnvelope.XMax = pPageEnv.XMax * dScaleX;
  417. pEnvelope.YMin = pPageEnv.YMin * dScaleY;
  418. pEnvelope.YMax = pPageEnv.YMax * dScaleY;
  419. pEnvelope.Offset(dx, dy);
  420. // 画指定的符号
  421. if (pTransformation != null)
  422. {
  423. pSymbol.SetupDC((int)e.Graphics.GetHdc(), pTransformation);
  424. pSymbol.Draw(pEnvelope as IGeometry);
  425. pSymbol.ResetDC();
  426. e.Graphics.ReleaseHdc();
  427. }
  428. pEnvelope = null;
  429. pSymbol = null;
  430. }
  431. //画打印纸张
  432. if (pPaperEnv != null)
  433. {
  434. //创建符号
  435. if (pPageSetForm.PrinterPaperCheck.Checked)
  436. {
  437. pSymbol = OutputCommon.CreateSimpleFillSym(pPaperColor, SimpleFillStyle.Null, pPaperColor, SimpleLineStyle.DashDot, 0.15);
  438. }
  439. else
  440. {
  441. pSymbol = OutputCommon.CreateSimpleFillSym(pMapFrameColor, SimpleFillStyle.Null, pPaperColor, SimpleLineStyle.Solid, 0.15);
  442. }
  443. //计算纸张范围
  444. pEnvelope = ContextRegistry.GetContext().GetObject("GIS_Envelope") as IEnvelope;
  445. pEnvelope.XMin = pPaperEnv.XMin * dScaleX;
  446. pEnvelope.XMax = pPaperEnv.XMax * dScaleX;
  447. pEnvelope.YMin = pPaperEnv.YMin * dScaleY;
  448. pEnvelope.YMax = pPaperEnv.YMax * dScaleY;
  449. pEnvelope.Offset(dx, dy);
  450. //画指定的符号
  451. if (pTransformation != null)
  452. {
  453. pSymbol.SetupDC((int)e.Graphics.GetHdc(), pTransformation);
  454. pSymbol.Draw(pEnvelope as IGeometry);
  455. pSymbol.ResetDC();
  456. e.Graphics.ReleaseHdc();
  457. }
  458. pEnvelope = null;
  459. pSymbol = null;
  460. }
  461. }
  462. }
  463. void FormIDCombox_SelectedIndexChangedEvent(object sender, object data)
  464. {
  465. //获得页面阈值(厘米)
  466. switch (pPageSetForm.FormIDCombox.SelectedIndex)
  467. {
  468. case 0://8.5in x 11in
  469. {
  470. m_MaxWidth = 8.5 * OutputCommon.GetUnitScale(Units.Inches);
  471. m_MaxHeight = 11 * OutputCommon.GetUnitScale(Units.Inches);
  472. }
  473. break;
  474. case 1://8.5in x 14in
  475. {
  476. m_MaxWidth = 8.5 * OutputCommon.GetUnitScale(Units.Inches);
  477. m_MaxHeight = 14 * OutputCommon.GetUnitScale(Units.Inches);
  478. }
  479. break;
  480. case 2:
  481. {
  482. m_MaxWidth = 11 * OutputCommon.GetUnitScale(Units.Inches);
  483. m_MaxHeight = 17 * OutputCommon.GetUnitScale(Units.Inches);
  484. }
  485. break;
  486. case 3:
  487. {
  488. m_MaxWidth = 17 * OutputCommon.GetUnitScale(Units.Inches);
  489. m_MaxHeight = 22 * OutputCommon.GetUnitScale(Units.Inches);
  490. }
  491. break;
  492. case 4:
  493. {
  494. m_MaxWidth = 22 * OutputCommon.GetUnitScale(Units.Inches);
  495. m_MaxHeight = 34 * OutputCommon.GetUnitScale(Units.Inches);
  496. }
  497. break;
  498. case 5:
  499. {
  500. m_MaxWidth = 34 * OutputCommon.GetUnitScale(Units.Inches);
  501. m_MaxHeight = 34 * OutputCommon.GetUnitScale(Units.Inches);
  502. }
  503. break;
  504. case 6:
  505. {
  506. m_MaxWidth = 148 * OutputCommon.GetUnitScale(Units.Millimeters);
  507. m_MaxHeight = 210 * OutputCommon.GetUnitScale(Units.Millimeters);
  508. }
  509. break;
  510. case 7:
  511. {
  512. m_MaxWidth = 210 * OutputCommon.GetUnitScale(Units.Millimeters);
  513. m_MaxHeight = 297 * OutputCommon.GetUnitScale(Units.Millimeters);
  514. }
  515. break;
  516. case 8:
  517. {
  518. m_MaxWidth = 297 * OutputCommon.GetUnitScale(Units.Millimeters);
  519. m_MaxHeight = 420 * OutputCommon.GetUnitScale(Units.Millimeters);
  520. }
  521. break;
  522. case 9:
  523. {
  524. m_MaxWidth = 420 * OutputCommon.GetUnitScale(Units.Millimeters);
  525. m_MaxHeight = 594 * OutputCommon.GetUnitScale(Units.Millimeters);
  526. }
  527. break;
  528. case 10:
  529. {
  530. m_MaxWidth = 594 * OutputCommon.GetUnitScale(Units.Millimeters);
  531. m_MaxHeight = 841 * OutputCommon.GetUnitScale(Units.Millimeters);
  532. }
  533. break;
  534. case 11:
  535. {
  536. m_MaxWidth = 841 * OutputCommon.GetUnitScale(Units.Millimeters);
  537. m_MaxHeight = 1189 * OutputCommon.GetUnitScale(Units.Millimeters);
  538. }
  539. break;
  540. case 12:
  541. {
  542. pPageLayoutControl.Page.QuerySize(out m_MaxWidth, out m_MaxHeight);
  543. m_MaxWidth = m_MaxWidth * OutputCommon.GetUnitScale(pPageLayoutControl.Page.Units);
  544. m_MaxHeight = m_MaxHeight * OutputCommon.GetUnitScale(pPageLayoutControl.Page.Units);
  545. }
  546. break;
  547. }
  548. //获取页面
  549. if (pPageSetForm.LocationRadio2.SelectedIndex == 0)
  550. {
  551. pPageSetForm.WidthSpin.Value = (decimal)Math.Round(m_MaxWidth, 2);
  552. pPageSetForm.HeightSpin.Value = (decimal)Math.Round(m_MaxHeight, 2);
  553. }
  554. else
  555. {
  556. pPageSetForm.WidthSpin.Value = (decimal)Math.Round(m_MaxHeight, 2);
  557. pPageSetForm.HeightSpin.Value = (decimal)Math.Round(m_MaxWidth, 2);
  558. m_MaxHeight = Convert.ToDouble(pPageSetForm.WidthSpin.Value);
  559. m_MaxWidth = Convert.ToDouble(pPageSetForm.HeightSpin.Value);
  560. }
  561. if (m_MaxWidth <= m_MaxHeight)
  562. pPageSetForm.LocationRadio2.SelectedIndex = 0;
  563. else
  564. pPageSetForm.LocationRadio2.SelectedIndex = 1;
  565. m_CurrentUnit = Units.Centimeters;
  566. pPageSetForm.UnitsCombox.Text = "厘米";
  567. // 根据当前属性显示示例图
  568. pPageSetForm.PictureControl.Refresh();
  569. }
  570. #endregion
  571. #region 私用方法
  572. private void InitPrinter()
  573. {
  574. List<string> listNames = GetPrintersName();
  575. DataTable pDT = new DataTable();
  576. pDT.Columns.Add("打印机名"); pDT.Columns.Add("CODE");
  577. for (int i = 0; i < listNames.Count; i++)
  578. {
  579. DataRow pDr = pDT.NewRow();
  580. pDr[0] = listNames[i]; pDr[1] = i;
  581. pDT.Rows.Add(pDr);
  582. }
  583. pPageSetForm.PrinterNameCombox.DisplayFieldName = "打印机名";
  584. pPageSetForm.PrinterNameCombox.CodeFieldName = "CODE";
  585. pPageSetForm.PrinterNameCombox.DataSource = pDT;
  586. SetPrinterAtti();
  587. initCombPaper();
  588. }
  589. private void InitPage()
  590. {
  591. DataTable FormIDDT = new DataTable();
  592. FormIDDT.Columns.Add("标准尺寸"); FormIDDT.Columns.Add("CODE");
  593. List<string> LstFormID = new List<string>();
  594. LstFormID.Add("Letter - 8.5in x 11in");
  595. LstFormID.Add("Legal - 8.5in x 14in");
  596. LstFormID.Add("Tabloid - 11in x 17in");
  597. LstFormID.Add("ANSI C - 17in x 22in");
  598. LstFormID.Add("ANSI D - 22in x 34in");
  599. LstFormID.Add("ANSI E - 34in x 44in");
  600. LstFormID.Add("A5 - 148mm x 210mm");
  601. LstFormID.Add("A4 - 210mm x 297mm");
  602. LstFormID.Add("A3 - 297mm x 420mm");
  603. LstFormID.Add("A2 - 420mm x 594mm");
  604. LstFormID.Add("A1 - 594mm x 841mm");
  605. LstFormID.Add("A0 - 841mm x 1189mm");
  606. LstFormID.Add("自定义");
  607. for (int i = 0; i < LstFormID.Count; i++)
  608. {
  609. DataRow pDr = FormIDDT.NewRow();
  610. pDr[0] = LstFormID[i]; pDr[1] = i;
  611. FormIDDT.Rows.Add(pDr);
  612. }
  613. pPageSetForm.FormIDCombox.DisplayFieldName = "标准尺寸";
  614. pPageSetForm.FormIDCombox.CodeFieldName = "CODE";
  615. pPageSetForm.FormIDCombox.DataSource = FormIDDT;
  616. DataTable UnitsDT = new DataTable();
  617. UnitsDT.Columns.Add("单位");
  618. UnitsDT.Columns.Add("CODE");
  619. List<string> LstUnits = new List<string>();
  620. LstUnits.Add("点"); LstUnits.Add("英寸"); LstUnits.Add("厘米"); LstUnits.Add("毫米");
  621. for (int i = 0; i < LstUnits.Count; i++)
  622. {
  623. DataRow pDr = UnitsDT.NewRow();
  624. pDr[0] = LstUnits[i]; pDr[1] = i;
  625. UnitsDT.Rows.Add(pDr);
  626. }
  627. pPageSetForm.UnitsCombox.DisplayFieldName = "单位";
  628. pPageSetForm.UnitsCombox.CodeFieldName = "CODE";
  629. pPageSetForm.UnitsCombox.DataSource = UnitsDT;
  630. IPage pPage = pPageLayoutControl.Page;
  631. if (pPage.FormID == PageFormID.PageFormSameAsPrinter)
  632. {
  633. pPageSetForm.PrinterPaperCheck.Checked = true;
  634. pPageSetForm.PrintableAreaCheck.Enabled = true;
  635. pPageSetForm.PrintableAreaCheck.Checked = true;
  636. }
  637. else
  638. {
  639. pPageSetForm.PrinterPaperCheck.Checked = false;
  640. pPageSetForm.PrintableAreaCheck.Enabled = false;
  641. pPageSetForm.PrintableAreaCheck.Checked = false;
  642. pPageSetForm.FormIDCombox.SelectedIndex = (int)pPage.FormID;
  643. pPageSetForm.LocationRadio2.SelectedIndex = (int)pPage.Orientation - 1;
  644. }
  645. pPageSetForm.StretchGraphicsCheck.Checked = pPageLayoutControl.Page.StretchGraphicsWithPage;
  646. }
  647. private List<string> GetPrintersName()
  648. {
  649. List<string> strNames = new List<string>();
  650. foreach (string pkInstalledPrinters in
  651. PrinterSettings.InstalledPrinters)
  652. {
  653. string name = pkInstalledPrinters;
  654. strNames.Add(name);
  655. }
  656. return strNames;
  657. }
  658. private string GetDefaultPrinterName()
  659. {
  660. PrintDocument pd = new PrintDocument();
  661. return pd.PrinterSettings.PrinterName;
  662. }
  663. private void SetPrinter(string strNewPrinterName)
  664. {
  665. IPrinter pPrinter;
  666. IPaper pPaper;
  667. IPaper pNewPaper;
  668. IPage pPage;
  669. string sNewPrinterName; //如果打印机被移除,使用默认打印机.
  670. Dictionary<int, string> eFormEnum;
  671. double dPageWidth;
  672. double dPageHeight;
  673. double dNewPageWidth;
  674. double dNewPageHeight;
  675. double doldW = 0;
  676. double doldh = 0;
  677. pPageLayoutControl.Printer.Paper.QueryPaperSize(out doldW, out doldh);
  678. doldW = doldW * OutputCommon.GetUnitScale(pPageLayoutControl.Printer.Units);
  679. doldh = doldh * OutputCommon.GetUnitScale(pPageLayoutControl.Printer.Units);
  680. bool bNeedPrinter;
  681. bool bFormFound;
  682. pPaper = ContextRegistry.GetContext().GetObject("GIS_Paper") as IPaper;
  683. pNewPaper = ContextRegistry.GetContext().GetObject("GIS_Paper") as IPaper;
  684. pPage = ContextRegistry.GetContext().GetObject("GIS_Page") as IPage;
  685. pPrinter = ContextRegistry.GetContext().GetObject("GIS_EmfPrinter") as IPrinter;
  686. bNeedPrinter = false;
  687. bFormFound = false;
  688. dPageWidth = 0;
  689. dPageHeight = 0;
  690. dNewPageWidth = 0;
  691. dNewPageHeight = 0;
  692. sNewPrinterName = strNewPrinterName;
  693. if (pPageLayoutControl != null)
  694. {
  695. pPage = pPageLayoutControl.Page;
  696. pPage.QuerySize(out dPageWidth, out dPageHeight);
  697. if (dPageWidth == 0)
  698. {
  699. if (pPage.Orientation == 2)
  700. {
  701. dPageWidth = 11;
  702. dPageHeight = 8.5;
  703. }
  704. else
  705. {
  706. dPageWidth = 8.5;
  707. dPageHeight = 11;
  708. }
  709. }
  710. try
  711. {
  712. string strNa = pPageLayoutControl.Printer.Paper.PrinterName;
  713. bNeedPrinter = false;
  714. }
  715. catch
  716. {
  717. bNeedPrinter = true;
  718. }
  719. if (bNeedPrinter)
  720. {
  721. if (pPage.StretchGraphicsWithPage == true)
  722. {
  723. pPage.StretchGraphicsWithPage = false;
  724. }
  725. pPage.FormID = PageFormID.PageFormCUSTOM;
  726. pPage.PutCustomSize(dPageWidth, dPageHeight);
  727. }
  728. pPage.StretchGraphicsWithPage = false;
  729. pPaper.PrinterName = sNewPrinterName;
  730. pPrinter.Paper = pPaper;
  731. eFormEnum = pPaper.FormIDs;
  732. dPageWidth = dPageWidth * OutputCommon.GetUnitScale(pPageLayoutControl.Page.Units);
  733. dPageHeight = dPageHeight * OutputCommon.GetUnitScale(pPageLayoutControl.Page.Units);
  734. foreach (int iCounter in eFormEnum.Keys)
  735. {
  736. pNewPaper = ContextRegistry.GetContext().GetObject("GIS_Paper") as IPaper;
  737. pNewPaper.PrinterName = sNewPrinterName;
  738. pNewPaper.Orientation = pPage.Orientation;
  739. pNewPaper.FormID = (short)iCounter;
  740. pNewPaper.QueryPaperSize(out dNewPageWidth, out dNewPageHeight);
  741. dNewPageWidth = dNewPageWidth * OutputCommon.GetUnitScale(pNewPaper.Units);
  742. dNewPageHeight = dNewPageHeight * OutputCommon.GetUnitScale(pNewPaper.Units);
  743. if (pPage.FormID == PageFormID.PageFormSameAsPrinter)
  744. {
  745. if ((Math.Round(dPageHeight) == (Math.Round(dNewPageHeight))) && (Math.Round(dPageWidth) == (Math.Round(dNewPageWidth))))
  746. {
  747. bFormFound = true;
  748. pPageLayoutControl.Printer.Paper = pNewPaper; // pMapDoc.Printer.Paper = pNewPaper;
  749. pPageLayoutControl.Page.PutCustomSize(dPageWidth, dPageHeight);
  750. pPageLayoutControl.Page.FormID = PageFormID.PageFormSameAsPrinter;
  751. pPageLayoutControl.ActiveView.PrinterChanged(pPageLayoutControl.Printer);
  752. break;
  753. }
  754. }
  755. else
  756. {
  757. if ((Math.Round(doldW) == (Math.Round(dNewPageHeight))) && (Math.Round(doldh) == (Math.Round(dNewPageWidth))))
  758. {
  759. bFormFound = true;
  760. pPageLayoutControl.Printer.Paper = pNewPaper; // pMapDoc.Printer.Paper = pNewPaper;
  761. pPageLayoutControl.ActiveView.PrinterChanged(pPageLayoutControl.Printer);
  762. break;
  763. }
  764. }
  765. }
  766. if (!bFormFound)
  767. {
  768. if (pPage.FormID == PageFormID.PageFormSameAsPrinter)
  769. {
  770. pPageLayoutControl.Printer.Paper = pNewPaper;
  771. pPage.FormID = PageFormID.PageFormCUSTOM;
  772. pPage.PutCustomSize(dPageWidth, dPageHeight);
  773. pPageLayoutControl.ActiveView.PrinterChanged(pPageLayoutControl.Printer);
  774. }
  775. else
  776. {
  777. pPageLayoutControl.Printer.Paper = pNewPaper;
  778. pPageLayoutControl.ActiveView.PrinterChanged(pPageLayoutControl.Printer);
  779. }
  780. }
  781. }
  782. }
  783. private void SetPrinterAtti()
  784. {
  785. if (pPageSetForm.PrinterNameCombox.Text.ToString() == "")
  786. {
  787. return;
  788. }
  789. string path = @"win32_printer.DeviceId='" + @pPageSetForm.PrinterNameCombox.Text.ToString() + "'";
  790. ManagementObject printer = new ManagementObject(path);
  791. printer.Get();
  792. PropertyDataCollection.PropertyDataEnumerator pde = printer.Properties.GetEnumerator();
  793. string str = "";
  794. while (pde.MoveNext())
  795. {
  796. object obj = pde.Current.Value;
  797. if (pde.Current.Name == "PortName")
  798. {
  799. pPageSetForm.PrinterLocationLabel.Text = (pde.Current.Value == null) ? "" : pde.Current.Value.ToString();
  800. }
  801. if (pde.Current.Name == "PrinterState")
  802. {
  803. //label11.Text = (pde.Current.Value == null) ? "" : pde.Current.Value.ToString();
  804. }
  805. if (pde.Current.Name == "DriverName")
  806. {
  807. pPageSetForm.PrinterLXLabel.Text = (pde.Current.Value == null) ? "" : pde.Current.Value.ToString();
  808. }
  809. if (pde.Current.Name == "Comment")
  810. {
  811. pPageSetForm.PrinterBZLabel.Text = (pde.Current.Value == null) ? "" : pde.Current.Value.ToString();
  812. }
  813. str = str + "(" + pde.Current.Name + ":" + ((pde.Current.Value == null) ? "" : pde.Current.Value.ToString()) + ")";
  814. }
  815. }
  816. private void initCombPaper()
  817. {
  818. DataTable pDT = new DataTable();
  819. pDT.Columns.Add("纸张");
  820. pDT.Columns.Add("CODE");
  821. m_PaperFormID.Clear();
  822. IPaper pPaper = pPageLayoutControl.Printer.Paper;
  823. short iOrent = pPaper.Orientation;
  824. Dictionary<int, string> eFormEnum = pPaper.FormIDs;
  825. int j = 0;
  826. foreach (int FormID in eFormEnum.Keys)
  827. {
  828. m_PaperFormID.Add(j, FormID);
  829. DataRow pDr = pDT.NewRow();
  830. pDr[0] = eFormEnum[FormID]; pDr[1] = j;
  831. pDT.Rows.Add(pDr);
  832. j = j + 1;
  833. }
  834. pPageSetForm.PaperCombox.DisplayFieldName = "纸张";
  835. pPageSetForm.PaperCombox.CodeFieldName = "CODE";
  836. pPageSetForm.PaperCombox.DataSource = pDT;
  837. pPageSetForm.LocationRadio1.SelectedIndex = iOrent - 1;
  838. }
  839. private void optPageDerectionChange()
  840. {
  841. double dTempW;
  842. double dTempH;
  843. double dTemp;
  844. dTempW = Convert.ToDouble(pPageSetForm.WidthSpin.Value);
  845. dTempH = Convert.ToDouble(pPageSetForm.HeightSpin.Value);
  846. if (pPageSetForm.LocationRadio2.SelectedIndex == 0)
  847. {
  848. if (dTempW > dTempH)
  849. {
  850. //更新阈值
  851. dTemp = m_MaxWidth;
  852. m_MaxWidth = m_MaxHeight;
  853. m_MaxHeight = dTemp;
  854. //更新控件显示
  855. pPageSetForm.WidthSpin.Text = dTempH.ToString();
  856. pPageSetForm.HeightSpin.Text = dTempW.ToString();
  857. }
  858. }
  859. else
  860. {
  861. if (dTempW < dTempH)
  862. {
  863. //更新阈值
  864. dTemp = m_MaxWidth;
  865. m_MaxWidth = m_MaxHeight;
  866. m_MaxHeight = dTemp;
  867. //更新控件显示
  868. pPageSetForm.WidthSpin.Text = dTempH.ToString();
  869. pPageSetForm.HeightSpin.Text = dTempW.ToString();
  870. }
  871. }
  872. // 根据当前属性显示示例图
  873. pPageSetForm.PictureControl.Refresh();
  874. }
  875. private void PageSamePrinter(bool isSame)
  876. {
  877. if (isSame)
  878. {
  879. pPageSetForm.EqualsLabel.Visible = true;
  880. pPageSetForm.FormIDLabel.Visible = false;
  881. pPageSetForm.FormIDCombox.Visible = false;
  882. pPageSetForm.PrintableAreaCheck.Enabled = true;
  883. pPageSetForm.WidthSpin.Enabled = false;
  884. pPageSetForm.HeightSpin.Enabled = false;
  885. pPageSetForm.LocationRadio2.Enabled = false;
  886. pPageSetForm.PrintableAreaCheck.Enabled = true;
  887. pPageSetForm.PrintableAreaCheck.Checked = true;
  888. }
  889. else
  890. {
  891. pPageSetForm.EqualsLabel.Visible = false;
  892. pPageSetForm.FormIDLabel.Visible = true;
  893. pPageSetForm.FormIDCombox.Visible = true;
  894. pPageSetForm.PrintableAreaCheck.Enabled = false;
  895. pPageSetForm.WidthSpin.Enabled = true;
  896. pPageSetForm.HeightSpin.Enabled = true;
  897. pPageSetForm.PrintableAreaCheck.Enabled = false;
  898. pPageSetForm.PrintableAreaCheck.Checked = false;
  899. pPageSetForm.LocationRadio2.Enabled = true;
  900. }
  901. }
  902. private Units GetUnit()
  903. {
  904. switch (pPageSetForm.UnitsCombox.SelectedIndex)
  905. {
  906. case 0:
  907. return Units.Points;
  908. case 1:
  909. return Units.Inches;
  910. case 2:
  911. return Units.Centimeters;
  912. case 3:
  913. return Units.Millimeters;
  914. default:
  915. return Units.Centimeters;
  916. }
  917. }
  918. private int GetPageFormID(double dWidth, double dHeight)
  919. {
  920. double iMaxWidth = 0;
  921. double iMaxHeight = 0;
  922. DataTable FormIDDT = pPageSetForm.FormIDCombox.DataSource as DataTable;
  923. if (FormIDDT == null || FormIDDT.Rows.Count == 0) return 12;
  924. for (int i = 0; i < FormIDDT.Rows.Count; i++)
  925. {
  926. int m = Convert.ToInt32(FormIDDT.Rows[i]["CODE"]);
  927. switch (m)
  928. {
  929. case 0://8.5in x 11in
  930. {
  931. iMaxWidth = 8.5 * OutputCommon.GetUnitScale(Units.Inches);
  932. iMaxHeight = 11 * OutputCommon.GetUnitScale(Units.Inches);
  933. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  934. {
  935. return 0;
  936. }
  937. }
  938. break;
  939. case 1://8.5in x 14in
  940. {
  941. iMaxWidth = 8.5 * OutputCommon.GetUnitScale(Units.Inches);
  942. iMaxHeight = 14 * OutputCommon.GetUnitScale(Units.Inches);
  943. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  944. {
  945. return 1;
  946. }
  947. }
  948. break;
  949. case 2:
  950. {
  951. iMaxWidth = 11 * OutputCommon.GetUnitScale(Units.Inches);
  952. iMaxHeight = 17 * OutputCommon.GetUnitScale(Units.Inches);
  953. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  954. {
  955. return 2;
  956. }
  957. }
  958. break;
  959. case 3:
  960. {
  961. iMaxWidth = 17 * OutputCommon.GetUnitScale(Units.Inches);
  962. iMaxHeight = 22 * OutputCommon.GetUnitScale(Units.Inches);
  963. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  964. {
  965. return 3;
  966. }
  967. }
  968. break;
  969. case 4:
  970. {
  971. iMaxWidth = 22 * OutputCommon.GetUnitScale(Units.Inches);
  972. iMaxHeight = 34 * OutputCommon.GetUnitScale(Units.Inches);
  973. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  974. {
  975. return 4;
  976. }
  977. }
  978. break;
  979. case 5:
  980. {
  981. iMaxWidth = 34 * OutputCommon.GetUnitScale(Units.Inches);
  982. iMaxHeight = 34 * OutputCommon.GetUnitScale(Units.Inches);
  983. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  984. {
  985. return 5;
  986. }
  987. }
  988. break;
  989. case 6:
  990. {
  991. iMaxWidth = 148 * OutputCommon.GetUnitScale(Units.Millimeters);
  992. iMaxHeight = 210 * OutputCommon.GetUnitScale(Units.Millimeters);
  993. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  994. {
  995. return 6;
  996. }
  997. }
  998. break;
  999. case 7:
  1000. {
  1001. iMaxWidth = 210 * OutputCommon.GetUnitScale(Units.Millimeters);
  1002. iMaxHeight = 297 * OutputCommon.GetUnitScale(Units.Millimeters);
  1003. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  1004. {
  1005. return 7;
  1006. }
  1007. }
  1008. break;
  1009. case 8:
  1010. {
  1011. iMaxWidth = 297 * OutputCommon.GetUnitScale(Units.Millimeters);
  1012. iMaxHeight = 420 * OutputCommon.GetUnitScale(Units.Millimeters);
  1013. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  1014. {
  1015. return 8;
  1016. }
  1017. }
  1018. break;
  1019. case 9:
  1020. {
  1021. iMaxWidth = 420 * OutputCommon.GetUnitScale(Units.Millimeters);
  1022. iMaxHeight = 594 * OutputCommon.GetUnitScale(Units.Millimeters);
  1023. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  1024. {
  1025. return 9;
  1026. }
  1027. }
  1028. break;
  1029. case 10:
  1030. {
  1031. iMaxWidth = 594 * OutputCommon.GetUnitScale(Units.Millimeters);
  1032. iMaxHeight = 841 * OutputCommon.GetUnitScale(Units.Millimeters);
  1033. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  1034. {
  1035. return 10;
  1036. }
  1037. }
  1038. break;
  1039. case 11:
  1040. {
  1041. iMaxWidth = 841 * OutputCommon.GetUnitScale(Units.Millimeters);
  1042. iMaxHeight = 1189 * OutputCommon.GetUnitScale(Units.Millimeters);
  1043. if (Math.Round(dWidth) == Math.Round(iMaxWidth) && Math.Round(dHeight) == Math.Round(iMaxHeight))
  1044. {
  1045. return 11;
  1046. }
  1047. }
  1048. break;
  1049. default:
  1050. {
  1051. return 12;
  1052. }
  1053. break;
  1054. }
  1055. }
  1056. return 12;
  1057. }
  1058. #endregion
  1059. }
  1060. }