阅读:2287回复:2
[分享]关于地图打印中常见的几个问题的解决办法
<P>把关于横向打印和分幅打印二个常见的解决方法贴出来,供大家参考!</P>
<P><FONT color=#1a1ae6>1.实现横向打印的关键步骤</FONT></P> <P>axPageLayoutControl1.Page.Orientation=2;</P> <P>IGraphicsContainer pGraphicsContainer = axPageLayoutControl1.GraphicsContainer; <br> IMapFrame pMapFrame = pGraphicsContainer.FindFrame(m_ActiveView.FocusMap) as IMapFrame;</P> <P>Ienvelope newEnvelope= newBLandscapeEnvelop(你的地图数据的横向envelope,长宽变动一下后生成的新的envelope)</P> <P> IElement pElement = pMapFrame as IElement;<br> pElement.Geometry = newEnvelope; </P> <P>axPageLayoutControl1.ActiveView.Refresh(); //最后刷新一下就可以</P> <P><FONT color=#2222dd>2.分幅打印的分割方法</FONT></P> <P>private ArrayList GetFarmerCol(IEnvelope curEnvelope,double width,double height)<br> {<br> ArrayList pEnvelopeList = new ArrayList();<br> double pPrintScale = m_FormPrinterPageSet.printScale;<br> //width单位为厘米,/100为米,/1000为公里,/100为经纬度(上海地区为北半球1度约100公里,赤道地区约130公里)<br> //---->既:纸张的长或宽除以10,000,000为经纬度<br> double pFrameWidth = pPrintScale * width / 10000000;<br> double pFrameHeight = pPrintScale * height / 10000000; <br> <br> double xCol = curEnvelope.Width/pFrameWidth;<br> double xRow = curEnvelope.Height/pFrameHeight;<br> <br> int pCol =Convert.ToInt32(xCol);//不足一列的得按一列计算,行同理<br> if(pCol<xCol)<br> pCol++;</P> <P> int pRow =Convert.ToInt32(xRow);<br> if(pRow<xRow) <br> pRow++;<br> <br> //当只有一页或不足一页时候的情况(此时pCol and pRow ==1)<br> if(pCol==1 ;; pRow == 1)<br> {<br> pEnvelopeList.Add(m_CurEnvelope);<br> }<br> else//多页情况<br> {<br> for (int i=0; i<pCol ; i++)<br> {<br> double pXMin = (curEnvelope.XMin ) + (i * pFrameWidth);<br> double pXMax = (curEnvelope.XMin ) +((i+1)* pFrameWidth);<br> for (int j = 0 ;j<pRow ; j++)<br> {<br> double pYMin = (curEnvelope.YMin )+ (j * pFrameHeight );<br> double pYMax = (curEnvelope.YMin )+((j+1)* pFrameHeight );<br> IEnvelope pNewEnve = new EnvelopeClass();<br> pNewEnve.PutCoords(pXMin,pYMin,pXMax,pYMax); <br> pEnvelopeList.Add(pNewEnve);<br> }<br> }<br> }<br> return pEnvelopeList; } </P> <P>有好的建议的话请大家跟贴!,<br><img src="images/post/smile/dvbbs/em11.gif" /></P> [此贴子已经被作者于2006-10-21 17:52:09编辑过]
|
|
|
1楼#
发布于:2006-10-24 14:31
<P>不错 ,不过这个只能单是在pagelayout里打印的,而我想问的就是我们加载的一般是在mapcontrol里的,那如何将mapcontrol里的图转化到pagelayout里呢?谢谢~~~~</P>
|
|
2楼#
发布于:2006-10-25 09:16
<img src="images/post/smile/dvbbs/em08.gif" />
|
|
|