VC++开发GIS系统(164)重绘线之更新重绘函数

在文章《VC++开发GIS系统(94)窗口的重绘(四)》中已经实现了点文件的重绘,本文的将继续完善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();
            }

        }
    }
}

可见本文增加了线文件和重绘,其中getAllLines函数可以参考:VC++开发GIS系统(162)重绘线之查找可视范围所有的线,lineDrawAll函数参考:VC++开发GIS系统(163)重绘线之绘制一条折线

详细代码可以参考:GitHub

VC++开发GIS系统(163)重绘线之绘制一条折线 VC++开发GIS系统(165)补充知识MFC中ComboBox顺序问题

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论