TẠO GIAO DIỆN (tt)
Nếu muốn mở file.fig có sẵn, ta có thể chọn ngay từ cửa sổ
lệnh
>> guide ten_file.fig
Hay vào menu File rồi chọn Open. Hay Ctrl + O
©Copyright 2007
MATLAB
161
TẠO GIAO DIỆN (tt)
Align Objects (căn lề các đối tượng)
Tools/Align Objects…/
©Copyright 2007
MATLAB
162
TẠO GIAO DIỆN (tt)
Bấm kép chuột component trong
vùng layout để soạn tính chất của
component, Thí dụ bấm kép vào
Push Buton sẽ hiện ra cửa sổ
Property Inspector hoặc cũng có
thể bấm chuột phải để hiện ra
Context Menu (hình bên), sau đó
bấm Property Inspector. Mỗi
component là mỗi Object được điều
khiển bởi uicontrol (User Interface
Control)
©Copyright 2007
MATLAB
163
TẠO GIAO DIỆN (tt)
Các component mà GUI cho phép là:
Axes: vẽ hệ trục
Check box: là hộp kiểm tra cho phép đưa vào các chọn lựa khi
bấm chuột vào đó.
Edit text: Là hộp văn bản đưa chuỗi kí tự vào đó.
Frame: Khung bao một cửa sổ hình.
List box: Gồm một bảng các mục để chọn lựa
Pop-up menu: Menu sổ xuống trình bày một bảng các chọn
lựa khi bấm chuột vào.
Push button: Tương tự Checkbox nhưng chỉ chọn được một,
Radio button: (nút bật) giống push button nhưng có hiển thị
trạng thái thay đổi mỗi khi nhấn.
Popup Menu: Tạo menu.
©Copyright 2007
MATLAB
164
TẠO GIAO DIỆN (tt)
Một số component sẽ gây ra hành động khi tác
động vào nó bằng cách goi một hàm M mà người
dùng phải soạn thảo. Sau khi đã biên tập các
thuộc tính và gọi hàm, có thể cất figure và file áp
dụng M đi kèm bằng cách vào menu File-Save
hay File-Save as và đánh tên file.
Muốn chạy chương trình gọi ten_file.m (hoặc
dùng các lệnh openfig, open, hgfile.fig), file này
sẽ khởi động file ten_file.fig và xuất hiện cửa sổ
hình ảnh ten_file.fig mà ta sẽ thao tác trên các
component đã soạn thảo.
©Copyright 2007
MATLAB
165
TẠO GIAO DIỆN (tt)
Tool – GUI Options để chọn các option cho giao diện
Các chọn lựa cho GUI
©Copyright 2007
MATLAB
166
TẠO GIAO DIỆN (tt)
Resize behavior có 3 lựa chọn:
Non-resizable: khơng thay đổi kích thước cửa FIG (mặc định).
Proportional: Người dùng có thể điều chỉnh kích thước cửa sổ
và các component trong đó sẽ tự điều chỉnh phù hợp
Other: Dùng hàm ResizeFcn để điều chỉnh.
Ô Command-Line accessibility có các lựa chọn:
Off: Các lệnh đánh sau dâu >> không tác động đến cửa sổ FIG.
On: Các dòng lệnh tác động đến cửa sổ FIG, GUI là current
figure
Callback: GUI là current fugure đối với các lệnh callback
Other: Phụ thuộc cửa sổ Property Inspector (thuộc tính
HandleVisibility và IntegerHandle)
©Copyright 2007
MATLAB
167
TẠO GIAO DIỆN (tt)
XÂY DỰNG GIAO DIỆN
Start
Xác định công việc
Draw GUI
TEST DESIGN
Viết
Viếtcode
code
Test
Testcode
code
Stop
Stop
©Copyright 2007
MATLAB
168
TẠO GIAO DIỆN (tt)
Sau khi xác định được hình dáng của giao diện,
dùng chuột kéo các đối tượng cần sử dụng sang
figure, sắp xếp theo đúng ý tưởng thiết kế.
Thay đổi các thuộc tính của đối tượng.
Viết chương trình callback.
Chuyển sang chế độ active để thử chương trình.
Thí dụ 1: Tạo giao diện để giải và vẽ đồ thị
phương trình bậc 2. Giao diện gồm có 5 text, 5
edit, 2 push, 1check, 1 axes.
©Copyright 2007
MATLAB
169
TẠO GIAO DIỆN (tt)
Bài tập:
XÂY DỰNG GIAO DIỆN
Tag
EditA
EditB
EditC
EditX1
EditX2
a. Control
b. Active
Giao diện ở chế độ thiết kế và thực thi
©Copyright 2007
MATLAB
170
TẠO GIAO DIỆN (tt)
Thí dụ 2: xây dựng một giao diện đơn giản sau
©Copyright 2007
MATLAB
171
TẠO GIAO DIỆN (tt)
Tạo cửa sổ chính figure – ‘Welcome to User Interface’s
Giude’ theo cách sau:
Mở Matlab Editor
Nhập nội dung sau:
% User Interface's Guide
% Matlab Experiments 2003
% TcAD, CIT, Cantho University
% ---------------------------------------------------------------------------------% Initialize whole figure...
namefig = 'Welcome to User Interface''s Guide';
figpos = get(0,'DefaultFigurePosition'); % lay vi tri mac nhien
figpos(1)= figpos(1)-10; figpos(2)= figpos(2)-10;
figpos(3)= figpos(3)+10; figpos(4)= figpos(4)+10;
% Tao figure
fig=figure( ...
'Name', namefig, ...
'NumberTitle','off', ...
'Position',figpos);
©Copyright 2007
MATLAB
172
TẠO GIAO DIỆN (tt)
Lưu thành file giaodien.m
>>giaodien <Enter> % thi hanh
Quan sát kết quả trên hình
sau (Lưu ý các thuộc tính:
Name, Position)
>>set(fig) % xem thuộc
tính của figure trong cửa
sổ lệnh
©Copyright 2007
MATLAB
173
TẠO GIAO DIỆN (tt)
Thêm vào figure một axes cho phép hiển thị đồ họa:
Nhập tiếp nội dung sau vào file giaodien.m
% ---------------------------------------------------------------------------% main axes
axs=axes('Position',[0.05 0.4 0.65 0.55]);
Lưu và thi hành file này.
©Copyright 2007
MATLAB
174
TẠO GIAO DIỆN (tt)
Hiển thị dòng ‘Matlab Experiments’ bên dưới axes:
Nhập tiếp nội dung sau vào file giaodien.m
% ------------------------------------------% text
txtpos=[10 50 425 50];
txt=uicontrol(...
'Style','text',...
'BackgroundColor',[0.8 0.8 0.8],...
'ForegroundColor',[0.4 0.5 0.3],...
'String','Matlab Experiments',...
'Position',txtpos,...
'Fontname','Courier',...
'FontWeight','Bold',...
©Copyright 2007
'FontSize',26);
MATLAB
175
TẠO GIAO DIỆN (tt)
Lưu và thi hành file này.
©Copyright 2007
MATLAB
176
TẠO GIAO DIỆN (tt)
Tạo một frame có shadow bên phải figure để đặt các nút chức
©Copyright 2007
năng. Nhập tiếp nội dung sau vào file giaodien.m
% ---------------------------------------------% Console frames
p1=0.755; p2=0.05; p3=0.2; p4=0.90;
frm1pos = [p1 p2 p3 p4];
frm2pos = [p1-0.005 p2+0.005 p3 p4];
% shadow frame
frm1=uicontrol( ...
'Style','frame', ...
'Units','normalized', ...
'Position',frm1pos, ...
'ForegroundColor',[0.4 0.4 0.4],...
'BackgroundColor',[0.4 0.4 0.4]);
% main frame
frm2=uicontrol( ...
'Style','frame', ...
'Units','normalized', ...
'Position',frm2pos, ...
'ForegroundColor',[0.7 0.7 0.7],...
'BackgroundColor',[0.65 0.65 0.65]);
MATLAB
177
TẠO GIAO DIỆN (tt)
Lưu và thi hành file này.
©Copyright 2007
MATLAB
178
TẠO GIAO DIỆN (tt)
Tạo nút ‘Close’ có chức năng đóng cửa sổ figure hiện hành:
Nhập tiếp nội dung sau vào file giaodien.m
% -----------------------------------------------------------% Close button
closeHndl=uicontrol(...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',[p1+0.01 p2+0.05 p3-0.025 0.05], ...
'String','Close', ...
'Foregroundcolor','b',...
'Fontsize',9,...
'Callback','close');
Lưu và thi hành file này.
©Copyright 2007
MATLAB
179
TẠO GIAO DIỆN (tt)
Vấn đề quan trọng nhất đối với một nút chức
năng là thi hành công việc tương ứng khi
người sử dụng thao tác. Thuộc tính ‘CallBack’
cho phép: thi hành một lệnh của Matlab dưới
dạng chuỗi (bao gồm lệnh gọi hàm, script file,
biểu thức toán, …). Sinh viên thử thay lệnh
close bằng một lệnh khác, chẳng hạn demos
và quan sát đáp ứng.
Tạo nút Sphere để vẽ một hình cầu 3D:
Nhập tiếp nội dung sau vào file giaodien.m
©Copyright 2007
MATLAB
180
TẠO GIAO DIỆN (tt)
©Copyright 2007
MATLAB
181
TẠO GIAO DIỆN (tt)
Lưu và thi hành file này.
©Copyright 2007
MATLAB
182
TẠO GIAO DIỆN (tt)
Tạo nút Picture để hiển thị ảnh màu:
Nhập tiếp nội dung sau vào file giaodien.m
% -------------------------------------------------------------% Picture button
pic=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',[p1+0.01 p4-0.125 p3-0.025 0.05], ...
'String','Picture', ...
'Foregroundcolor','b',...
'Fontsize',9,...
'Callback',['imshow(imread(''flowers.tif''))']);
©Copyright 2007
MATLAB
183
TẠO GIAO DIỆN (tt)
Lưu và thi hành file này.
©Copyright 2007
MATLAB
184
TẠO GIAO DIỆN (tt)
Sinh viên lưu ý cách biểu diễn nhiều lệnh ở dạng
chuỗi cho ‘CallBack’. Trong trường hợp có quá
nhiều lệnh phục vụ chức năng này, ta nên đưa
chúng vào một script file hoặc một hàm khác.
Ngoài ra, nếu ta tạo giao diện dưới dạng một hàm
(function) thì thuộc tính ‘CallBack’ cho phép gọi
một hàm con được viết ngay trong file này.
©Copyright 2007
MATLAB
185