《一个实例搞定MATLAB界面编程》的实践总结

       //这是一篇旧文,从新浪博客搬到此地。

       在本文的开头,首先非常感谢作者彭军可以为大家分享出这篇优秀的可操作的实例教程。对于初次涉及GUI界面编程的人来说,正如作者自己说的,坚持做完实例,即使不能说没有什么难度,起码对GUI编程已经非常了解了。

       写这篇文章主要想记录一下在操作这个实例的过程中自己遇到的问题及对一些函数的认识。希望在总结的过程中能有新的收获,如果有什么不对的地方,欢迎交流指正。

       在整个过程中,我犯得一个比较严重的错误就是在设置pjimage.fig界面的Tag属性时,因为粗心将“figure_pjimage”写成了“figure_pjimmage”,多写了一个“m”,当时并没有发现,而且一旦保存之后好像并不能再修改。虽然这不算真正意义上的错误,但的确为后面的程序编写带来了很大的麻烦。 到共享数据那一块儿,使用setappdata函数和getappdata函数时,依然使用的handles.figure_pjimage。运行时总是报错,当时就各种找原因,百度、询问同学等,就是找不出问题,一直折腾到凌晨一两点还没有搞出来,费时又费力。之后反复看错误代码,突然就想到了可能是这个原因,回头查看tag属性,果然是写错了,这也导致之后所有涉及figure_pjimage的,都只能写成figure_pjimmage。

       所以以后程序出错的时候,一定要首先查看错误代码,将其搞懂。因为错误代码才是你程序出错的直接原因,而不是简单的将其复制到浏览器上寻求答案。同时,相对于英文版,学好英文才能更好的看懂错误代码。

       在实例中,还涉及到的一个大问题就是各种命名,包括Label、Tag、中间量以及界面名等名称的选择。基本上都是附属命名,如1, 1_1,1_1_1等,力求简明,望名知义。采用好的命名方式,会给编程带来极大的方便。

        每添加一项操作,完成之后都要保存,并运行检查。每添加一个控件,都会自动生成其回调函数。只需要在回调函数下添加相应的函数,该控件就能执行相应的动作。

       程序完成之后,打开时一般用.m文件打开,用.fig打开会出错。多个界面的话,用主界面的.m打开。

        还有一个问题就是最后的提问对话框。如果不选择“保存”和“不保存”,而是直接关闭对话框的话,会关闭整个界面。我的改进方法如下
在这里插入图片描述
       添加了一个“return”,就解决了这个问题。

接下来就按照文章顺序,复习一下各种操作及函数的用法。

1、 菜单编辑器,包括Menu Bar和Context Menus
        Menu Bar就是用来设置你的界面的菜单的,可以设置多级菜单。菜单名即Label里填的东西,Tag里填的就是你可以在.m文件中调用这个菜单的东西,类似于它的代号。Accelerator可以设置它的快捷键,Callback可以查看它的回调函数。

       Context Menus也是创建菜单,只不过是通过点击鼠标右键进行调用。本实例在坐标轴上创建“保存”按钮,通过坐标轴属性中的UIContext Menu将“保存”与坐标轴联系起来。

2 对齐工具(Align Objects)

       方便执行界面中的控件对齐操作

3 Toolbar Editor,添加工具选项

4 属性

       双击控件或者鼠标右键“PropertyInspector”都可以打开属性窗口,其中最主要的就是Tag、Name和String。每添加一个控件基本上都要设置它的Tag属性,它与控件对应的回调函数名一致。Name属性一般用来设置一个窗口的标题。FontSize属性,设置字体大小。Enable,相应控件可选或者不可选。

5 “打开”菜单项的函数

       uigetfile()函数,打开对话框,该函数可以获得所选的文件的文件名和路径名[filename, pathname],方便后边调用。

6 “保存”菜单项的函数

       uiputfile()函数,可以获得要保存的文件名和路径[filename, pathname],供imwrite()使用。

7 对话框“取消”按钮的程序

if isequal(filename,0) || isequal(pathname,0)

return;

end

8 选中需要的坐标轴

       axes()函数,括号中为“handles.所选坐标轴的Tag名”,即可选中当前坐标轴进行使用。

9 fpath=[pathname filename],将文件名和路径名组合成完整路径。注意路径变量在前,文件变量在后

       fpath=fullfile(pathname, filename);%获得全路径的另一种方法

10 imread() 读取图片的数据

       imshow() 显示图片

       imwrite() 保存图片

11 setappdata()和getappdata()函数用来声明、调用共享数据

       不同回调函数间变量的调用

12 close()函数/delete()函数,关闭相应界面

13 Static Text,静态文本,显示相应的数值和文字

14 Slider控件,滑动条

15 set()函数,设置对象的属性值

       get()函数,返回对象的属性值

16 调用另一个界面

% H = IM2BW_ARGS returns the handle to a new IM2BW_ARGS or the handle to

% the existing singleton*.

17 findobj()函数,返回对象句柄值

18 guihandles()函数,返回的对象句柄值转换成句柄,在新的界面中使用所转换对象中的控件

19 getimage()函数,用来获取窗口、坐标轴及图片中的图片数据

20 questdlg()函数,提问对话框

21 isempty()函数,如果括号里为空,则返回真。

22 feval_r(),调用某个函数,执行相应功能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值