• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

matlab的gui,怎么在同一个axes用两个button切换两张不同的图片

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

**

matlab的gui,怎么在同一个axes用两个button切换两张不同的图片

**

本人在学习图像处理的过程中遇到了这个问题,上网也没找到点啥解决办法,可能是我太菜了,不过还好,突然想到能解决的办法,好歹算是解决了,下面说一下我开始遇到的情况以及解决办法,如果有大佬能有更好的办法欢迎留言。

对了,我的matlab是r2017a不知道其他的会不会有这个问题

再ps,这个说的是matlab 的gui,如果是初学者可以看b站这个视频,讲的还挺不错的


一开始,我想用两个axes

在axes1中imshow(‘01.jpg’),然后再axes2中imshow(‘02.jpg’),并且将axes2的visible调整为off,这样从表面上就只能看到axes1,然后就可以用button来回切换axes1和axes2的visible属性,让一个可见一个不可见

经过测试发现,button回调函数写的是正确的,但是就是不能实现来回切换功能,然后我把axes2放空,发现axes1里在imshow之后,imshow的图片会跑到最顶层来,然后不断按下button会让axes2里的空坐标系出现在图片的后方。就和word里面的图片置于顶层一样,但关键是我还找不到能调整顶层底层的属性

后来还想了干脆在同一个坐标系里删掉重画算了,反正自己用的,但是又想了想太浪费运算了,还要耗时间等个1、2秒

再然后终于,终于想到了个还算可以用的办法!!!

-------------------------------------------正文开始----------------------------------------

两个axes既然不能来回切换,那就搞两个uipanel来回切换

原理和axes改visible是一样的,我主要想说的是搞这个的时候的注意事项

显然首先需要两个一样大的panel和axes,然后把他们挪到位置一致就好,那么问题来了,这么简单的事情为什么我还要提?因为我自己踩到了坑

问题的表现是回调函数和visible顺序之类完全正确的时候仍然没法正常工作。

原因出在创建第二个panel的时候,因为第一个panel太大了,所以新建第二个panel的时候照着第一个比划,然后等第二个一样大之后发现,uipanel2的parent居然是uipanel1,然后就导致把uipanel1隐藏的时候连带它的子元素藏起来了,所以怎么切换都没有用,只能切换出来个uipanel1里的图片还有空白的情况

可以右键随便哪看这个对象浏览器


里面是这个亚子的,之前我的uipanel2就是被包在了uipanel1里面导致问题

解决办法:要两个一模一样的话就复制粘贴好了,然后把复制粘贴的那个缩小,缩小到能在你画布的空白处放下,这样放过去它的parent就是figure了,比如下面这个,最右边那个小坨就是第二个了uipanel了

然后选中那个小panel,用键盘的上下左右移动到合适的位置,然后再拉大还原回去就好了


这么简单个问题,还搞了我大半天,搞出来了是简单,没搞出来是真的头大,有大佬还知道怎么解决imshow的始终在顶层,所在axes无法被visible off的话欢迎留言评论


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
在windows10系统中搭建Rust语言开发环境详细介绍发布时间:2022-07-18
下一篇:
IntelliJ IDEA安装Rust插件发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap