4、具体设计
现介绍各个功能模块的功能与实现。 4.1菜单栏的设计。 通过Menu Editor
创建如下菜单,通过以下菜单来控制显示或隐藏功能按键
5 / 52
以“编辑”菜单中“图像变形”中的“图像翻转”为例说明实现用户界面功能键“图像翻转”的显示与隐藏。 实现该功能的程序段如下:
function tuxiangfanzhuan_Callback(hObject, eventdata, handles) % hObject handle to tuxiangfanzhuan (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.uipanel7,'Visible','on'); if strcmp(get(gcbo, 'Checked'),'on') set(handles.uipanel7,'Visible','on'); set(gcbo, 'Checked', 'off');
set(handles.uipanel7,'Visible','off'); else
set(gcbo, 'Checked', 'on'); end
该段程序通过设置“图像翻转”功能键对应的句柄uipanel7中的“Visible”属性的开关来实现该功能键的显示隐藏。其他同理。 4.2图像的读取和保存。
(1)利用“文件”菜单中的“打开”、“保存为?”分别实现图片的读取与保存。
6 / 52
利用matlab中 “ uigetfile”、“imread” “imshow”实现图像文件的读取与显示:
function openfile_Callback(hObject, eventdata, handles) % hObject handle to openfile (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'载入图像');
if isequal(filename,0)|isequal(pathname,0) errordlg('没有选中文件','出错'); return; else
file=[pathname,filename];
global S %设置一个全局变量S,保存初始图像路径,以便之后的还原操作 S=file;
7 / 52
x=imread(file);
set(handles.axes1,'HandleVisibility','ON'); axes(handles.axes1); imshow(x);
set(handles.axes1,'HandleVisibility','OFF'); axes(handles.axes2); imshow(x); handles.img=x;
guidata(hObject,handles); end
程序关键部分:
通过[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'载入图像')选择相应路径打开的图像;通过file=[pathname,filename]; x=imread(file); 读取选中的图像;最后,通过imshow(x)在显示区域上显示图像。
(2)图像保存。
利用“uiputfile”、“imwrite”函数实现图像文件的保存。
function save_Callback(hObject, eventdata, handles) % hObject handle to save (see GCBO)
8 / 52