阅读:1722回复:4
[求助]Mxt文档能够保存多页的打印地图吗?(在线等候)
<P>在某一流程里,有多页的地图需要打印(每页的内容都不一样),我可以把这一流程内的所有页的地图打印内容同时保存在同一个mxt文档里面吗?还是每一页的地图都对应保存为一个文档?还是有其他的做法?请大侠们指教!</P>
|
|
1楼#
发布于:2006-10-20 15:27
<P>感谢</P>
|
|
2楼#
发布于:2006-10-20 09:52
<P>这个说起来就比较麻烦了。大体是这样的,你当前打印的地图的envelope+当前的比例为计算值,然后按设置的打印比例跟当前地图打印的比例进行运算,得到要分割的块数m,再把envelope分割成m块。重点计算方法如下:</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> } </P> |
|
|
3楼#
发布于:2006-10-19 17:32
谢谢,请问如何分割?
|
|
4楼#
发布于:2006-10-19 15:49
是可以的,就是常说的分幅打印了。一个mxt给分割成多块,保存着你所须打印的多页地图!
|
|
|