麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

VC++开发GIS系统(217)重绘区功能实现

前文《VC++开发GIS系统(216)重绘区之获取可视范围的所有区》实现了重绘区的一个重要函数 getAllPolys,用于获取可视范围内的所有区,接下来的工作是实现重绘区的功能。

在文章《VC++开发GIS系统(94)窗口的重绘(四)》中已经实现了点文件的重绘,《VC++开发GIS系统(164)重绘线之更新重绘函数》实现了线文件的重绘。本文的将继续完善displayAllGraphs函数,

函数完善

找到malagisView.cpp中的displayAllGraphs函数,更新代码如下:

void CmalagisView::displayAllGraphs()
{
  upadteTree();
  for (size_t i = 0; i < mNode.size(); i++)
  {
    if (mNode[i].isOpen == true)
    {
      //重绘点文件
      if (mNode[i].fileType==L"mpt")
      {
        //先获取所有符合条件的点
        CPointIO pio;
        vector<malaPointFile>allPoints;
        pio.getAllPoint(mScreen, allPoints,mNode[i].filePath);
        //再依次画点
        malaCDC dc(this,mScreen);
        for (size_t j = 0; j < allPoints.size();j++)
        {
          dc.pointDrawAuto(allPoints[j].m_point, allPoints[j].m_pointpro);
        }
        if (allPoints.size())
          allPoints.clear();
      }
      //重绘线文件
      if (mNode[i].fileType == L"mle")
      {
        //先获取可视范围所有的线
        CLineIO lio;
        vector<malaLineFile>allLines;
        lio.getAllLines(mScreen, allLines, mNode[i].filePath);
        //再依次画区
        malaCDC dc(this, mScreen);
        for (size_t j = 0; j < allLines.size();j++)
        {
          dc.lineDrawAll(allLines[j].mLine,allLines[j].mLinePro);
        }
        if (allLines.size())
          allLines.clear();
      }
      //重绘区文件
      if (mNode[i].fileType == L"mpn")
      {
        //先获取可视范围所有的线
        CPolyIO lio;
        vector<malaPolyFile>allPolys;
        lio.getAllPolys(mScreen, allPolys, mNode[i].filePath);
        //再依次画区
        malaCDC dc(this, mScreen);
        for (size_t j = 0; j < allPolys.size(); j++)
        {
          dc.polyDrawAuto(allPolys[j].mPoly, allPolys[j].mPolyPro);
        }
        if (allPolys.size())
          allPolys.clear();
      }
    }
  }
}

思路为先获取所有显示范围的区,然后依次绘图。其中 getAllPolys 参考文章《VC++开发GIS系统(216)重绘区之获取可视范围的所有区》, polyDrawAuto 参考文章《VC++开发GIS系统(208)输入区之绘制区的函数(多边形与椭圆)

详细代码可以参考:GitHub

麻辣GIS-Sailor
作者:
GIS爱好者,学GIS,更爱玩GIS。
微博关注
手机阅读
赞赏支持
手机阅读
微信捐助麻辣GIS
微信打赏
支付宝捐助麻辣GIS
支付宝打赏

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

3.如果本文对您有所帮助,请您对我们团队进行 打赏捐助让我们在传播3S的路上可以走得更远,不胜感激。PS:如果你是学生党,请优先把经费用于购买学习资料 以及 与小哥哥/小姐姐约会上:-)

如您有疑问,可在文末留言,或到麻辣GIS QQ群中提问。

QQ群(一):291616564 加入QQ群

QQ群(二):166408035 加入QQ群

QQ群(三):627853279 加入QQ群

QQ群(四):436386604 加入QQ群

QQ群(五):606176554 加入QQ群

QQ群(六):946178380 加入QQ群

QQ群(七):861271808 加入QQ群

新疆互助群:910717627 加入QQ群

微信公众号:malagis,扫描右边二维码直接关注。

发表评论