MATLAB? 基础与编程入门
GUIDE
图形用户界面入门
2
课程概述
使用图像
句柄图形 (Handle Graphics?)入门
设计 GUI
使用 GUIDE 创建外观
设置属性
保存 GUI
编写回调函数
激活并测试
3
读取二进制的数据文件
>> help loadnoaabin
LOADNOAABIN Load a NOAA binary file
[data,hdr] = loadnoaabin(fname)
data is the matrix,hdr is the structure
with information about the file.
在本章中使用的数据文件是成对匹配出现的,具有相同文件名但是具有不同的扩展名 (.bin和,hdr)。,hdr 文件中保存了读取,bin文件必要的信息说明。在这里可以通过单一函数完成读取数据的工作
4
加载并显示,bin 文件
加载 France.bin 文件,并且显示该数据文件
>> [data,hdr] = loadnoaabin('France.bin');
>> imagesc(data)
>> load cape
>> colormap(map)
>> caxis(...
[hdr.elev_m_min hdr.elev_m_max])
5
句柄图形 ( Handle Graphics)入门
MATLAB图形是由对象 (objects)组成的
每个图形对象都有唯一一个句柄 (handle)和一套定义其外观的属性 (properties)
对象按层次 (hierarchy)排布
Root (screen)
Figure
Core Objects Plot Objects Group Objects Annotation Objects
Image Light Line Patch Rectangle Surface
Axes UI Objects
UibuttongroupUicontrol UimenuUicontextmenu Uipanel Uitoolbar
Uipushtool Uitoggle
Text
6
图形对象的层次
Root
object
Figure
object
AxesUicontrolobjects
Image
object
Text
object
7
1,创建句柄值
2,实用函数
0 - 根对象句柄
gcf - 当前图句柄
gca - 当前轴句柄
gco - 当前对象句柄
3,FINDOBJ 和 FINDALL
获得一个对象的句柄
h_obj = findobj(h_parent,'Property','Value',...)
h_all = findall(h_parent,...)
h_line = plot(x_data,y_data,...)
何谓当前对象?
最近一次生成的对象或
最近一个选中的对象默认值 = 0 (root object)
8
set(h_object,'PropertyName','New_Value')
set(gca,'Color','Red')
修改对象属性 ( Properties)
获得当前属性清单:
获得可设置的属性清单:
获得一个对象的属性:
修改一个对象属性:
get(h_object) -- get(gca)
set(h_object) -- set(gcf)
get(h_object,'PropertyName')
get(gcf,'Color')
参考,Help Browser - Full Text search for,Graphics Object Hierarchy”
9
使用缺省设置
大多数属性都具有预定义的,原厂设定,值。
( 在属性值未指定时使用缺省值)
用户可以定义自己用于生成新对象时的,缺省值,。
( 把缺省设置放在,startup.m”中使用使其在整个进程中都有效 )
语法:
set(ancestor,'Default<Object><Property>',<Property_Val>)
使用 root object (0) 以作用于 所有新创建的对象
10
示例:使用缺省值
>> defaults
>> set(0,'DefaultSurfaceEdgeColor','b')
>> h=surf(peaks(15));
设定 Default Surface EdgeColor 为 Blue 并生成 新的曲面,
>> set(h,'EdgeColor','g')
设定 EdgeColor 为 Green
>> set(h,'EdgeColor','default')
指定 Default 值重置为 Default Value
>> set(h,'EdgeColor','factory')
>> set(h,'EdgeColor','remove')
重置或删除值
11
设计 GUI
进行应用程序开发的第一步是对即将实现的任务进行简要的设计,特别是在进行图形用户界面应用程序时,可以简要的规划界面的控件以及功能
Axis
Load,bin
peak,0
low,0
colormap
Default
zoom
12
GUIDE
Graphical User Interface Development Environment
13
GUIDE 默认属性
定义 GUIDE的默认属性 File→ Preferences.
14
创建 GUI外观
选择不同的对象并放置
15
GUI的对象
16
设置属性
对象的属性定义了对象的外观
特别重要的 Tag属性就好比对象的“绰号”,使用该属性可以准确识别不同的对象
Object Browser
Property Inspector
17
GUI对象的属性设置
String,Load,bin
Tag,loadbtn
HorizontalAlignment,right
String,Peak:
Tag,peaklabel
HorizontalAlignment,right
String,Low:
Tag,lowlabel
String,0
Tag,peakval
String,0
Tag,lowval
String,Colormap
Tag,colorlabel
String,Zoom
Tag,zoomtoggle
String,default
jet
cool
hot
Tag,colorpop
18
保存 GUI
保存 GUI
创建 FIG文件和 M文件
Tag属性用于编写 M函数
19
编写回调函数
自动生成的 M-文件提供了回调函数的框架
每个子函数的名称都按照对象的 Tag属性命令
%automatic
geogui('loadbtn_Callback',gcbo,[],guidata(gcbo))
20
GUI的回调函数
回调函数的参数 handles 是一个结构,该结构中保存了所有编写 GUI应用程序必要的信息,例如对象的 Tag属性
该结构可以简化程序的编写
例如获取 peakval 静态文本对象的句柄则使用语法
handles.peakval.
% --- Executes on button press in loadbtn.
function loadbtn_Callback(hObject,eventdata,handles)
% hObject handle to loadbtn (see GCBO)
% eventdata reserved - to be defined in a future
% version of MATLAB
% handles structure with handles and user data
22
激活并测试单击选择一个,bin
文件单击
23
使用 GUI
打开已经创建完毕的 GUI
>> geogui
使用 GUIDE 打开 GUI
>> guide geogui
或者使用 GUIDE 菜单命令 File→Open.
24
练习:平移数据图像
在现有的 GUI上增加复选框,复选框用来控制是否平移数据图像
放大操作和平移操作需要分别定义,因为这两种操作都用到了鼠标的拖放操作
复选框和切换按钮的属性值都保存在
Value
25
答案:平移数据图像增加复选框设置
String属性
Tag 属性
26
答案:平移数据图像
function zoomtoggle_Callback(hObject,eventdata,handles)
if get(hObject,'Value')
zoom on
set(handles.panchk,'Value',0)
pan off
else
zoom off
end
function panchk_Callback(hObject,eventdata,handles)
if get(hObject,'Value')
pan on
set(handles.zoomtoggle,'Value',0)
zoom off
else
pan off
end
27
本章小结
使用图像
句柄图形 (Handle Graphics?)入门
设计 GUI
使用 GUIDE 创建外观
设置属性
保存 GUI
编写回调函数
激活并测试
GUIDE
图形用户界面入门
2
课程概述
使用图像
句柄图形 (Handle Graphics?)入门
设计 GUI
使用 GUIDE 创建外观
设置属性
保存 GUI
编写回调函数
激活并测试
3
读取二进制的数据文件
>> help loadnoaabin
LOADNOAABIN Load a NOAA binary file
[data,hdr] = loadnoaabin(fname)
data is the matrix,hdr is the structure
with information about the file.
在本章中使用的数据文件是成对匹配出现的,具有相同文件名但是具有不同的扩展名 (.bin和,hdr)。,hdr 文件中保存了读取,bin文件必要的信息说明。在这里可以通过单一函数完成读取数据的工作
4
加载并显示,bin 文件
加载 France.bin 文件,并且显示该数据文件
>> [data,hdr] = loadnoaabin('France.bin');
>> imagesc(data)
>> load cape
>> colormap(map)
>> caxis(...
[hdr.elev_m_min hdr.elev_m_max])
5
句柄图形 ( Handle Graphics)入门
MATLAB图形是由对象 (objects)组成的
每个图形对象都有唯一一个句柄 (handle)和一套定义其外观的属性 (properties)
对象按层次 (hierarchy)排布
Root (screen)
Figure
Core Objects Plot Objects Group Objects Annotation Objects
Image Light Line Patch Rectangle Surface
Axes UI Objects
UibuttongroupUicontrol UimenuUicontextmenu Uipanel Uitoolbar
Uipushtool Uitoggle
Text
6
图形对象的层次
Root
object
Figure
object
AxesUicontrolobjects
Image
object
Text
object
7
1,创建句柄值
2,实用函数
0 - 根对象句柄
gcf - 当前图句柄
gca - 当前轴句柄
gco - 当前对象句柄
3,FINDOBJ 和 FINDALL
获得一个对象的句柄
h_obj = findobj(h_parent,'Property','Value',...)
h_all = findall(h_parent,...)
h_line = plot(x_data,y_data,...)
何谓当前对象?
最近一次生成的对象或
最近一个选中的对象默认值 = 0 (root object)
8
set(h_object,'PropertyName','New_Value')
set(gca,'Color','Red')
修改对象属性 ( Properties)
获得当前属性清单:
获得可设置的属性清单:
获得一个对象的属性:
修改一个对象属性:
get(h_object) -- get(gca)
set(h_object) -- set(gcf)
get(h_object,'PropertyName')
get(gcf,'Color')
参考,Help Browser - Full Text search for,Graphics Object Hierarchy”
9
使用缺省设置
大多数属性都具有预定义的,原厂设定,值。
( 在属性值未指定时使用缺省值)
用户可以定义自己用于生成新对象时的,缺省值,。
( 把缺省设置放在,startup.m”中使用使其在整个进程中都有效 )
语法:
set(ancestor,'Default<Object><Property>',<Property_Val>)
使用 root object (0) 以作用于 所有新创建的对象
10
示例:使用缺省值
>> defaults
>> set(0,'DefaultSurfaceEdgeColor','b')
>> h=surf(peaks(15));
设定 Default Surface EdgeColor 为 Blue 并生成 新的曲面,
>> set(h,'EdgeColor','g')
设定 EdgeColor 为 Green
>> set(h,'EdgeColor','default')
指定 Default 值重置为 Default Value
>> set(h,'EdgeColor','factory')
>> set(h,'EdgeColor','remove')
重置或删除值
11
设计 GUI
进行应用程序开发的第一步是对即将实现的任务进行简要的设计,特别是在进行图形用户界面应用程序时,可以简要的规划界面的控件以及功能
Axis
Load,bin
peak,0
low,0
colormap
Default
zoom
12
GUIDE
Graphical User Interface Development Environment
13
GUIDE 默认属性
定义 GUIDE的默认属性 File→ Preferences.
14
创建 GUI外观
选择不同的对象并放置
15
GUI的对象
16
设置属性
对象的属性定义了对象的外观
特别重要的 Tag属性就好比对象的“绰号”,使用该属性可以准确识别不同的对象
Object Browser
Property Inspector
17
GUI对象的属性设置
String,Load,bin
Tag,loadbtn
HorizontalAlignment,right
String,Peak:
Tag,peaklabel
HorizontalAlignment,right
String,Low:
Tag,lowlabel
String,0
Tag,peakval
String,0
Tag,lowval
String,Colormap
Tag,colorlabel
String,Zoom
Tag,zoomtoggle
String,default
jet
cool
hot
Tag,colorpop
18
保存 GUI
保存 GUI
创建 FIG文件和 M文件
Tag属性用于编写 M函数
19
编写回调函数
自动生成的 M-文件提供了回调函数的框架
每个子函数的名称都按照对象的 Tag属性命令
%automatic
geogui('loadbtn_Callback',gcbo,[],guidata(gcbo))
20
GUI的回调函数
回调函数的参数 handles 是一个结构,该结构中保存了所有编写 GUI应用程序必要的信息,例如对象的 Tag属性
该结构可以简化程序的编写
例如获取 peakval 静态文本对象的句柄则使用语法
handles.peakval.
% --- Executes on button press in loadbtn.
function loadbtn_Callback(hObject,eventdata,handles)
% hObject handle to loadbtn (see GCBO)
% eventdata reserved - to be defined in a future
% version of MATLAB
% handles structure with handles and user data
22
激活并测试单击选择一个,bin
文件单击
23
使用 GUI
打开已经创建完毕的 GUI
>> geogui
使用 GUIDE 打开 GUI
>> guide geogui
或者使用 GUIDE 菜单命令 File→Open.
24
练习:平移数据图像
在现有的 GUI上增加复选框,复选框用来控制是否平移数据图像
放大操作和平移操作需要分别定义,因为这两种操作都用到了鼠标的拖放操作
复选框和切换按钮的属性值都保存在
Value
25
答案:平移数据图像增加复选框设置
String属性
Tag 属性
26
答案:平移数据图像
function zoomtoggle_Callback(hObject,eventdata,handles)
if get(hObject,'Value')
zoom on
set(handles.panchk,'Value',0)
pan off
else
zoom off
end
function panchk_Callback(hObject,eventdata,handles)
if get(hObject,'Value')
pan on
set(handles.zoomtoggle,'Value',0)
zoom off
else
pan off
end
27
本章小结
使用图像
句柄图形 (Handle Graphics?)入门
设计 GUI
使用 GUIDE 创建外观
设置属性
保存 GUI
编写回调函数
激活并测试