登录论坛

查看完整版本 : [MATLAB GUI] matlab gui 参数传递问题


song212
2009-11-02, 10:49
我是新手,希望编写一个能够读入图像,显示图像,然后有鼠标移动时可以捕捉信息的界面,
function GetMousePointer
global handles
global im
clc
close all
hMainFig=figure('name','鼠标捕捉点坐标','number','off','menubar','none',...
'units','normalized','tag','hMainFig');
set(hMainFig,'units','normalized','position',[.02,.02,.8,.8]);
set(hMainFig,'defaultuicontrolfontname','隶书');
set(hMainFig,'defaultuicontrolfontsize',13);
set(hMainFig,'defaultuicontrolunits','normalized');
set(hMainFig,'pointer','arrow');
handles.im = dicomread('f:\RCM\RCM\27419_000001_1.2.840.113619.2.67.2202447239.13929081219131230.10001');
imshow(handles.im,[]);
min_gray = min(min(handles.im));
max_gray = max(max(handles.im));
width = max_gray-min_gray;
center = fix((min_gray+max_gray)/2);

set(hMainFig,'WindowButtonMotionFcn',@ShowPointData);
hText11=uicontrol(hMainFig,'style','text','position',[.15,.20,.05,.05],'string','min:');
hText12=uicontrol(hMainFig,'style','text','position',[.2,.20,.25,.05],'tag','hText12','string',num2str(min_gray));
hText13=uicontrol(hMainFig,'style','text','position',[.15,.15,.063,.05],'string','max:');
hText14=uicontrol(hMainFig,'style','text','position',[.21,.15,.24,.05],'tag','hText14','string',num2str(max_gray));
hText21=uicontrol(hMainFig,'style','text','position',[.502,.20,.07,.05],'string','width:');
hText22=uicontrol(hMainFig,'style','text','position',[.572,.20,.25,.05],'tag','hText22','string',num2str(width));
hText23=uicontrol(hMainFig,'style','text','position',[.502,.15,.08,.05],'string','center:');
hText24=uicontrol(hMainFig,'style','text','position',[.582,.15,.24,.05],'tag','hText24','string',num2str(center));
% hText24=uicontrol(hMainFig,'style','pushbutton','position',[.582,.15,.24,.05],'tag','button1');
handles=guihandles(hMainFig);
guidata(hMainFig,handles);
% set(hMainFig,'windowButtonDownFcn',@WritePointData)
guidata(hMainFig,handles)

function ShowPointData(hObject, eventdata, handles)
global handles
global im
% handles=guihandles(hMainFig);
img_size = size(handles.im);
p=get(gca,'currentpoint');
if p(1)>=0&&p(3)>=0&&p(1)<=img_size(1)&&p(3)<=img_size(2)
set(handles.hMainFig,'pointer','cross');
set(handles.hText12,'string',num2str(p(1)));
set(handles.hText22,'string',num2str(p(3)));
end
guidata(hObject,handles)

这是我借鉴另一位网友的程序做了一些小的修改,在ShowPointData程序段希望只在图像范围内有鼠标移动的响应,但不知道怎么将图像参数传递进来,每次运行都是“??? Reference to non-existent field 'im'.”
的错误,不知道应该怎么解决,请各位高手帮帮忙吧~~~~