前进后退视图的实现

前后视图的实现:


初始化:开辟两个栈,底下放两个哨兵。

过程:每次变换视图,将视图压到栈1。进行一次后退视图操作,就将栈1顶弹出,弹出的视图压到栈2;进行一次前进视图操作,就把栈2顶弹出,弹出的视图压到栈1。


此方法同样适用于浏览器、资源管理器的前进后退操作。本质上是利用了栈的LIFO的特性。


code:

stack<CMoRectangle> stkPre, stkAft; // 两个栈,用来控制前进和后退视图


// 前进响应

if (stkPre.size() > 1){

stkAft.push(stkPre.top());

stkPre.pop();

m_map.SetExtent(stkPre.top());

}

// 后退响应

if (stkAft.size() > 0){

stkPre.push(stkAft.top());

m_map.SetExtent(stkAft.top());

stkAft.pop();

}


运行结果(以后退为例,因为图实在太大了)





后退



原文在我的 Google drive 上: https://docs.google.com/document/d/1e4_yCMvemjD6qkoaKAE2FUjxgPo5MuuRAn9cVK4f6oQ/edit?usp=sharing 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值