moxili
路人甲
路人甲
  • 注册日期2005-05-11
  • 发帖数6
  • QQ
  • 铜币141枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1477回复:0

MapX输出问题,请高手执教

楼主#
更多 发布于:2006-12-12 09:55
<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>
喜欢0 评分0
游客

返回顶部