麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

VC++开发GIS系统(91)窗口的重绘(一)

前文《VC++开发GIS系统(90)画点(最终版)》已经可以正式实现画点了,也就是说画的点已经可以在界面显示,并且保存下来。但是有这么一个问题:当最大化或者最小化窗口的时候,之前画的点就不见了。下面的工作就是要实现重绘图形,使之最大化或者最小化窗口的时候,图形仍然存在。

OnDraw函数

对OnDraw函数的修改如下:

void CmalagisView::OnDraw(CDC* /*pDC*/)
{
    CmalagisDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // TODO:  在此处为本机数据添加绘制代码
    displayAllGraphs();
}

为了方便这里封装了一个displayAllGraphs函数,用来绘制所有文件打开状态下的的图形。

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++)
                {
                    switch (allPoints[j].m_pointpro.pointStyle)
                    {
                    case 0:
                        dc.pointDrawRect(allPoints[j].m_point, allPoints[j].m_pointpro);
                        break;
                    case 1:
                        dc.pointDrawTriangle(allPoints[j].m_point, allPoints[j].m_pointpro);
                        break;
                    case 2:
                        dc.pointDrawCircle(allPoints[j].m_point, allPoints[j].m_pointpro);
                        break;
                    default:
                        break;
                    }
                }
                if (allPoints.size())//释放vector
                    allPoints.clear();
            }
        }
    }
}

可以看出这里只实现了点的重绘,在后面的开发中会继续完善。从上面的代码中可以发现基本的流程如下:

  1. 获取所有需要重绘的点

  2. 将步骤1中的点画出来

  3. 释放步骤1中的点

其中步骤1中用到了一个getAllPoint函数,这个函数是在malaIO中定义的,具体的实现可以参考下文。

另,关于MFC重绘可以参考相关的文章,如:VC的MFC中重绘函数的使用总结(整理) VC++ - 窗口重绘等等。

详细代码可以参考:GitHub

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

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

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

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)