当前位置:文档之家› 图形图像用户界面设计

图形图像用户界面设计

实习报告
课程名称多媒体实验
实习题目图形图像用户界面设计专业通信工程
班级通信(2)班
学号
学生姓名
实习成绩
指导教师吴娱
2011年5月
图形图像用户界面设计
一、实验目的
了解句柄图形的基本概念,掌握图形用户界面的基本设计方法。

二、实验要求
上机完成实验题目,独立完成实验报告。

三、实验内容
设计简单的图像用户界面。

四、实验步骤
1、在MATLAB的命令窗口(Command Window)中运行guide命令:
打开GUIDE界面,如下:
然后,选择空模板(Blank GUI),点击OK,即可打开GUIDE的设计界面,如下:
如下:
单下添加菜单项:“打开”、“保存”、“退出”。

如下:
文件,所有的程序都是要写在这个M文件里面的。

在编程中,每一个鼠标动作都对应一个Callback函数。

那么菜单项也是如此。

在界面上,单击鼠标右键选择“Property Inspector”,即可打
开属性窗口。

当点击不同的控件时,其对应的属性都会在这里显示,
根据需要可以进行修改。

最主要的属性莫过于Tag属性和String属
性。

设置当前的Figure窗口的Tag属性为:figure_pjimage,窗口的标
题(Name属性)为:图像处理实例。

如下:
然后,点击工具栏的保存按钮。

之后,点击工具栏的运行按钮(Run)。

程序运行时的样子,是这样的:
文件下面的菜单项和快捷键我们都能看见,但是我们没有写程序,所以就算点也没有什么响应。

还有如果不想设置快捷键,可以在Menu Editor中设置,只要把其选择为Ctrl+none就行了。

这样的话,
保存项就没有快捷键了。

可以通过上面的按钮“View”来查看该菜单项的响应函数,也就是Callback函数。

也可以在pjimage.m中看,比如保存的Tag属性是m_file_save,那么它对应的Callback函数的名字就是m_file_save_Callback。

依次类推了。

2、下面来写打开菜单项的函数,要打开一个图片,当然要用打开对话框了。

在界面编程中,打开对话框的函数是uigetfile,关于它的详细说明用help uigetfile命令查看。

下面是打开菜单的响应函数:
function m_file_open_Callback(hObject, eventdata, handles) [filename,pathname]=uigetfile(...
{'*.bmp;*.jpg;*.png;*.jpeg','Image
Files(*.bmp,*.jpg,*.png,*.jpeg)';...
'*.*','All Files(*.*)'},...
'Pick an image');
保存.m文件,并运行程序。

点击“文件”下的“打开”,会打开如下的打开对话框:
那么获得路径后,要怎么样才能读入和显示一个图像呢?读入图像可以用imread函数,而需要显示在一个坐标轴上。

所以,需要在
界面上画一个坐标轴,
为了对比,画两个坐标轴,一个显示处理前,一个显示处理后的。

并且将处理前的坐标轴的Tag属性改为axes_src,处理后的坐标轴的Tag属性为axes_dst。

更改之后,保存,如下:
然后在m_file_open_Callback程序原来的基础上,再添加如下的程序:
axes(handles.axes_src);%用axes命令设定当前操作的坐标轴是axes_src
fpath=[pathname filename];%将文件名和目录名组合成一个完整的路径imshow(imread(fpath));%用imread读入图像,并用imshow在axes_src 上显示
运行程序,通过“打开”菜单项,打开一个图像。

效果如下:
然后用imwrite命令。

但imwrite命令的第一个参数就是所读入的图像数据,也就是imread的返回值。

这样的话,就要将m_file_open_Callback中的程序做一点小小的改动。

将最后一句imshow(imread(fpath)),更改为两句,如下:
img_src=imread(fpath);imshow(img_src);来保存一幅图像。

不仅如此,保存菜单的Callback函数,如何去获得打开菜单的Callback函数下的img_src变量呢?这就要将img_src来作为一个共享的数据,用setappdata和getappdata两个函数。

可以为界面上
面的任何一个具有Tag属性的空间添加应用程序数据。

在.m文件中会发现除了各个菜单项的Callback函数以外,还有两个函数:pjimage_Opening Fcn和pjimage_OutputFun。

而pjimage_Opening Fcn就相当于界面的初始化函数,而pjimage_OutputFun则是界面的输出函数,也就是当你不运行fig,而调用.m文件时的返回值。

所以,要在pjimage_Opening Fcn中添加如下程序,来共享这个img_src矩阵。

代码如下:
setappdata(handles.figure_pjimage,'img_src',0);
然后,在m_file_open_Callback函数的最后写上如下程序:setappdata(handles.figure_pjimage,'img_src',img_src);
那么,在m_file_save_Callback函数中就可以像这样的来提取img_src,如下:
img_src=getappdata(handles.figure_pjimage,’img_src’);
那么保存的时候,自然会用到保存对话框了。

要用保存对话框,就要用到uiputfile函数了,具体的请看help uiputfile查看。

保存菜单项下的程序(m_file_save_Callback),可以这样写:
img_src=getappdata(handles.figure_pjimage,'img_src');
[filename,pathname]=uiputfile({'*.bmp','BMP files';'*.jpg;','JPG files'},'Pick an Image');
if isequal(filename,0)||isequal(pathname,0)
return;%如果点了“取消”
else; fpath=fullfile(pathname,filename);%获得全路径的另一种方法end
img_src=getappdata(handles.figure_pjimage,'img_src');%取得打开图像的数据
imwrite(img_src,fpath);%保存图像
下面是退出菜单项的程序的。

要退出界面,只要用close函数就行了。

如下:
Close(handles.figure_pjimage);
五、实验心得:
这次实验主要内容是利用matlab软件进行图形图像用户的界面设计(界面选项功能的设计:打开图像,保存文件,退出),虽然程
序不用我们自己设计,但是由于初次接触感觉到设计的步骤很多,容易出乱子,容易出错。

所以这个实验要求我们要每一步都正确的完成,界面才可以被设计出来。

实验中会遇到各种各样的问题,首先是程序语句输入法的错误,比如说直接复制粘贴img_src=getappdata(handles.figure_pjimage,’img_src’); 就出现了语法的错误,如果有必要程序语句,我们要在m文件中重新输入,不能只是复制粘贴;读入图像显示在一个坐标轴上,需要在界面上画一个坐标轴,并且要进行保存,如果不保存将图不出图像来……实验中遇到的问题不少,但我们学到的东西也是很多的:如何设计界面,设计中要注意的问题等等,这次试验非常有意义,十分实用,我们受益匪浅。

习指导教师签字:
年月日。

相关主题