|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
GUI 是实现人机交互的中介,具有强大的功能,可以完成许多复杂的程序模块。想熟练5 B5 Q$ u: E& R8 y, P& Z
快捷地使用它,需要具有一定的知识储备和必要的经验技巧。, F# p7 U4 t- \. N# q Y: o4 K6 w
- Z }7 S( ?7 S' @. Q" d3 N3 d0 ?
) @; h( P) `' O. r2 J关于 MATLAB GUI 的入门,推荐使用 MATLAB 的帮助文档,仔细研读 HELP 是最好的办法。: t+ E# _0 H) g# A- Y# K9 o
需要了解函数句柄等必要基础知识,熟悉各控件对象的基本属性和方法操作,知晓不同控件
' J8 k/ j: K; }, J" w; x的合适使用条件及其特有的功能,并会采用不同的使用手段来实现相同功能的设计。
/ a( Q# C+ Q' Q8 Z( d( ~( X* |* |. i$ L6 B+ b( r: b7 n T- t* Z
& y: C- I8 ]$ S
(1)菜单和控件
9 ]3 O# c* P4 a9 X$ q/ I需要详细掌握菜单和控件。菜单很简单,就是弄清除菜单之间的关系和如何调用就可以。6 n9 ]7 B8 u7 Z1 A
控件的使用主要是用好CreateFcn 和Callback 属性。CreateFcn 中的语句就是在程序运行时,
" r, e7 N' v \& S/ r2 G就立即执行脚本。如果希望界面可控,那么最好用 Callback 属性。在相应控件下,添加相应$ T9 ^1 Q- B f f* z' R
的脚本就可以实现比较复杂计算绘图等功能。 ^9 \$ q+ f4 d0 T
& w, k4 S2 f$ `6 i% K# w! q9 b
- i# X* F+ {- B3 A- m e(2)事件处理7 P6 [3 o! L; f, ~# o$ `
需要重点掌握事件处理,理解函数回调的机理以及不同条件下回调的处理。使用独立回4 a- E. g# y" ~9 s6 X Y
调函数技术,可以让复杂的回调变得简单;全局变量是在函数的公共区说明,整个函数以及
% x' d4 A( r1 T. O所有对函数的递归调用都可以利用全局变量;同属性'Tag'一样,'UserData'属性可在函数之* S% i H, ]3 E F8 l( ~. l( A0 N2 m
间或递归函数的不同部分之间传递信息。如果需要多个变量,这些变量可以在一个容易辨识9 W5 \! s$ Y1 W3 [4 r8 K
的对象的属性'UsetData'中传递;通过函数句柄来定义回调实现数据的访问和方法的实现。- Q+ h6 Q i# W5 h b3 X7 S
9 A F4 O7 w5 r/ l; ~; U& @/ F
* _. R: J5 {8 k1 m(3)GUI 设计的原则和步骤% H3 x! e, V7 `( A6 s
在设计 GUI 的时候,要注意一定的原则和步骤,分析界面所要求实现的主要功能,明确
5 s4 n" _, X+ z设计任务,构思草图,设计界面和属性,编写对象的相应代码,实现控件的交互调用。: n; F$ }2 p( n* Z: U$ ]
另外对于 GUI 在具体学科的应用,其学科的知识是基础,要掌握具体学科的相关知识的
" Y5 g" H, R2 i# \- _7 x原理后,并用代码来实现,才能很好地结合 MATLAB 进行 GUI 编程。
+ E8 k% n. e3 q8 s |9 x3 Y L' n! ]' e6 y$ E. h+ p( g
% G; j: {: C* t; W; O
(4)GUI 实现方式的选择; S9 d% k* `& z0 b0 Q& e
最后考虑的问题是实现方式的选择:GUIDE 还是全脚本?MATLAB 自带的 GUI 设计工具9 A: b# d$ M0 c" ^% p
GUIDE 的好处就是非常容易入手,风格很像 VB,相关的控件可以随便拖来用,它们的位置和3 k/ e4 E9 w0 K+ R9 |
大小也可以像拖 windows 一样方便。但是 GUIDE 生成的是一个 fig 文件,它同时还会生成一
/ J; h: X: I" l0 Q. F2 q个包含了 fig 中放置的控件的相关回调函数的 m 脚本。这两个文件照理说是互相影响的,但: o7 h! p8 d. `9 j% x2 q8 m( ~ L
是当你改动了其中一个文件的内容,比如在 fig 中删掉一个原来的控件,但 m 脚本中对应的
- i: j0 [6 D9 A- }该控件的回调函数却仍然存在,虽说回调函数是空的,没什么关系,但破坏了程序架构的美4 Y& M2 v6 e! S" C5 m3 f
感,需要手动删掉这些代码。同时 GUIDE 还没有实现创建 uitoolbox 和所有 axes 的子对象。
" A, G% e2 L% u+ c4 G用全脚本实现最好入门就是读代码,MATLAB 就自带的 demo,包括按钮、单选按钮、框
4 U4 A1 x9 p9 ]+ p; r4 M$ N0 _ n# G; H架、复选框、文本标签、编辑文本框、滑动条、下拉菜单、列表框和双位按钮等的使用,顺% p2 O; F6 w6 n+ d
便还能了解 MATLAB 里句柄函数的参数传递,就可以更直观而快速地掌握 GUI 设计的技巧了。
) D3 d# @4 ^ C3 L- O' R/ o使用 M 文件代码可以重复使用,可以生成非常复杂的界面,可以实现组件,创建对象,方便
) s+ g+ r$ p$ I+ x; j' G地在 handle 中存取数据,将创建对象代码与动作执行代码很好地结合起来。9 F' y: O/ h% a" z
|
|