Tải bản đầy đủ (.pdf) (50 trang)

Part 10 TÍNH TOÁN ỨNG DỤNG TRONG KTDK

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.52 MB, 50 trang )

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


×