阅读:1478回复:0
MapX输出问题,请高手执教
<P>我想另存为JPG,在一定比例迟下全图输出,我的思路是在地图上移动MapX窗口,但是输出得到的Jpg拼接的时候总是有重叠部分,下面是代码,请高手执教</P>
<P>try {<BR> //提取MapX控件的坐标值:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><BR> double X1,X2,Y1,Y2;<BR> long oldUnit = m_ctrlMapX.GetMapUnit();<BR> //m_ctrlMapX.SetMapUnit(miUnitMeter);<BR> CMapXRectangle rect; //声明矩形变量<BR> rect.CreateDispatch(rect.GetClsid());<BR> //获取主图的边界<BR><BR> double MapXWith,MapXHeight;<BR> rect = m_ctrlMapX.GetBounds();<BR> <BR> X1 = rect.GetXMin(); //获得矩形左上顶点x坐标<BR> Y1 = rect.GetYMin(); //获得矩形左上顶点y坐标<BR> X2 = rect.GetXMax(); //获得矩形右下顶点x坐标<BR> Y2 = rect.GetYMax(); //获得矩形右下顶点y坐标<BR> MapXWith = rect.GetWidth();<BR> MapXHeight = rect.GetHeight();<BR> //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></P> <P> double centerX,centerY;<BR> CString saveName;<BR> double centerX0,centerY0;</P> <P> xCount=(X_MAX-X_MIN)/MapXWith+1;<BR> yCount=(Y_MAX-Y_MIN)/MapXHeight+1;<BR> centerX0 = X_MIN + MapXWith/2;<BR> centerY0 = Y_MIN + MapXHeight/2;</P> <P> /*saveName=_T("c:\\temp\\map.jpg");<BR> m_ctrlMapX.SetPaperUnit(miUnitCentimeter);<BR> m_ctrlMapX.ExportMap(saveName, miFormatJPEG,5.2,5.2);*/</P> <P> for (int j=0; j<yCount; j++)<BR> {<BR> for (int i=0; i<xCount;i++)<BR> {<BR> centerX=centerX0 + (MapXWith)*i ; //地图控件中心X坐标:<BR> centerY=centerY0 + (MapXHeight)*j ;//地图控件中心Y坐标:<BR> //m_ctrlMapX.ZoomTo(dZoomHome,centerX,centerY);<BR> m_ctrlMapX.SetCenterX(centerX);<BR> m_ctrlMapX.SetCenterY(centerY);<BR> m_ctrlMapX.Refresh();<BR> <BR> saveName.Format(_T("c:\\temp\\map%d.jpg"),(j*xCount+i));<BR> m_ctrlMapX.ExportMap(saveName, miFormatJPEG,5,5);<BR> }<BR> }<BR> m_ctrlMapX.SetCenterX(dCenterXHome);<BR> m_ctrlMapX.SetCenterY(dCenterYHome);</P> <P> } catch (COleDispatchException *e) {<BR> e->ReportError();<BR> e->Delete();<BR> } catch (COleException *e) {<BR> e->ReportError();<BR> e->Delete();<BR> }</P> |
|