|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
GUI 是实现人机交互的中介,具有强大的功能,可以完成许多复杂的程序模块。想熟练
n0 q$ y) H* v* ]6 u1 |快捷地使用它,需要具有一定的知识储备和必要的经验技巧。
. J! n! z4 H) h( k1 c. a# H: q, W' L7 F( C) Q- w7 P
/ k# D0 j* K! {% L: m/ f$ p7 a' \/ O
关于 MATLAB GUI 的入门,推荐使用 MATLAB 的帮助文档,仔细研读 HELP 是最好的办法。
' \4 ^7 r( h5 m! r( ~) c需要了解函数句柄等必要基础知识,熟悉各控件对象的基本属性和方法操作,知晓不同控件
' z8 W+ I1 r+ e9 i0 ^7 N% S$ @的合适使用条件及其特有的功能,并会采用不同的使用手段来实现相同功能的设计。
! S$ ^5 h7 G) x
" N/ z+ |8 v: S# M- o a7 M+ ? b0 F! }: M/ g Y
(1)菜单和控件
' l5 v& [2 x' x, J$ W# w6 q需要详细掌握菜单和控件。菜单很简单,就是弄清除菜单之间的关系和如何调用就可以。
% X* ~$ I. k- M! a$ {控件的使用主要是用好CreateFcn 和Callback 属性。CreateFcn 中的语句就是在程序运行时,3 L/ S; f. q- x" K
就立即执行脚本。如果希望界面可控,那么最好用 Callback 属性。在相应控件下,添加相应% L( R. j ~% \. m: t
的脚本就可以实现比较复杂计算绘图等功能。
. N# v9 w& F) ^& y+ u$ a
) _5 N4 a- \% }) c0 k
/ j/ {- x: g+ l" `; C1 I(2)事件处理
& d; c& X1 x9 x/ ]$ t% o0 C需要重点掌握事件处理,理解函数回调的机理以及不同条件下回调的处理。使用独立回: x( \3 b, n f1 E, P# n
调函数技术,可以让复杂的回调变得简单;全局变量是在函数的公共区说明,整个函数以及
& } J" r! h& D& w4 n& e' b$ ]所有对函数的递归调用都可以利用全局变量;同属性'Tag'一样,'UserData'属性可在函数之4 z$ h/ E% D, W3 ~& I ?8 |, L
间或递归函数的不同部分之间传递信息。如果需要多个变量,这些变量可以在一个容易辨识 W" @" y9 O' q9 D' N* D
的对象的属性'UsetData'中传递;通过函数句柄来定义回调实现数据的访问和方法的实现。
; Y2 O% [0 C; ~1 Z4 E9 A
* B, P$ z7 v3 u8 D n) l$ Z+ Q9 p) k8 b0 ^- S7 p# y
(3)GUI 设计的原则和步骤
X4 R( N" g! y/ i; R: g/ {在设计 GUI 的时候,要注意一定的原则和步骤,分析界面所要求实现的主要功能,明确
' j2 s) L( c, q" L3 g' \, y! n设计任务,构思草图,设计界面和属性,编写对象的相应代码,实现控件的交互调用。
7 @% b; H4 v1 k- o+ s另外对于 GUI 在具体学科的应用,其学科的知识是基础,要掌握具体学科的相关知识的. z7 I3 W) C8 J- r% P. @! h9 ]
原理后,并用代码来实现,才能很好地结合 MATLAB 进行 GUI 编程。2 F- Z. t$ k8 ]/ l
, c. y: `! ~" e- g! |/ j0 }0 {
8 S9 c% F" m# z" X0 O% Z! |) x(4)GUI 实现方式的选择- p1 @* z, L% T# a! ^4 O
最后考虑的问题是实现方式的选择:GUIDE 还是全脚本?MATLAB 自带的 GUI 设计工具' v8 J- `: I t& U3 f' n) m
GUIDE 的好处就是非常容易入手,风格很像 VB,相关的控件可以随便拖来用,它们的位置和
* B @3 S5 C8 C+ O- z0 [大小也可以像拖 windows 一样方便。但是 GUIDE 生成的是一个 fig 文件,它同时还会生成一3 d k3 T1 A: z/ N+ u; u
个包含了 fig 中放置的控件的相关回调函数的 m 脚本。这两个文件照理说是互相影响的,但
9 b9 c6 `6 Y7 C; a( J0 t是当你改动了其中一个文件的内容,比如在 fig 中删掉一个原来的控件,但 m 脚本中对应的; l3 r; {7 j9 A1 K4 z
该控件的回调函数却仍然存在,虽说回调函数是空的,没什么关系,但破坏了程序架构的美
7 O/ z' V/ y8 t/ d感,需要手动删掉这些代码。同时 GUIDE 还没有实现创建 uitoolbox 和所有 axes 的子对象。
+ z" a. n; y2 P用全脚本实现最好入门就是读代码,MATLAB 就自带的 demo,包括按钮、单选按钮、框8 M/ j0 z! \. K8 J3 W1 [* q% p
架、复选框、文本标签、编辑文本框、滑动条、下拉菜单、列表框和双位按钮等的使用,顺# K& J0 k2 M3 A$ h8 b1 C+ G. ] Q
便还能了解 MATLAB 里句柄函数的参数传递,就可以更直观而快速地掌握 GUI 设计的技巧了。7 Y( m% J) ^% w
使用 M 文件代码可以重复使用,可以生成非常复杂的界面,可以实现组件,创建对象,方便
2 y% O2 e) l9 K7 t; `地在 handle 中存取数据,将创建对象代码与动作执行代码很好地结合起来。) |1 t, a$ H) A0 k4 o; |0 s. E
|
|