为什么我在Axes中显示图片或画图后,Axes的Tag没有了
如题,我的GUI里面有个Axes (Tag: axes1), 用axes(handles.axes1); plot(1:100,sin(1:100)); 显示图片后,我想加入一下操作:鼠标点击图片中某个地方然后用text命令显示信息。用了ButtonDownFcn加入text后却发现点鼠标并无反应,我检查才发现此时原本tag='axes1'的Axes控件的tag=''了。弄了好久也不行,请问这是什么问题,该怎么做? 谢谢!是我表述的不购清除吗
我写个例子吧,我两次运行test,第一次 直接用鼠标点axes1,在edit中会显示hello, 第二次我点graph按钮Plot图形后再点axe1,edit中却没有反应。 我设置断点在"set(handles.edit1,'String','hello');"发现当显示plot图形后程序便跑不到这里来,因此就不会对edit有任何操作。 请问,我该怎么做才能在显示plot图形后还可以进行鼠标控制呢? 谢谢!function varargout = test(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton',gui_Singleton, ...
'gui_OpeningFcn', @test_OpeningFcn, ...
'gui_OutputFcn',@test_OutputFcn, ...
'gui_LayoutFcn',[] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
= gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function test_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = test_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function pushbutton1_Callback(hObject, eventdata, handles)
= uigetfile('*.jpg');
axes(handles.axes1);
str = strcat(path,file);
= imread(str);
imshow(X);
function axes1_ButtonDownFcn(hObject, eventdata, handles)
set(handles.edit1,'String','hello');
function edit1_Callback(hObject, eventdata, handles)
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function pushbutton2_Callback(hObject, eventdata, handles)
axes(handles.axes1);
plot(1:100,sin(1:100));
刚刚看了论坛以前的帖子
发现这样该可以在画出来到图片中用鼠标标记。 可是还是有个问题,这个方法只能在没有曲线的地方点标记,却不能在曲线上点。 为什么呢?function pushbutton2_Callback(hObject, eventdata, handles)
axes(handles.axes1);
plot(1:100,sin(1:100));
set(handles.axes1,'ButtonDownFcn',@myfcn);
function myfcn(hObject, eventdata, handles);
pt=get(gca,'currentpoint');
hold on
text(pt(1,1),pt(1,2),['(' num2str(pt(1,1),3) num2str(pt(1,2),3) ')']);
plot(pt(1,1),pt(1,2),'b*');
不好意思了,这样就行了
原来给plot加handle就行了,才疏学浅,笑话了。:@$
function pushbutton2_Callback(hObject, eventdata, handles)
axes(handles.axes1);
a = plot(1:100,sin(1:100));
set(a,'ButtonDownFcn',@myfcn);
function myfcn(hObject, eventdata, handles);
pt=get(gca,'currentpoint');
hold on
text(pt(1,1),pt(1,2),['(' num2str(pt(1,1),3) num2str(pt(1,2),3) ')']);
plot(pt(1,1),pt(1,2),'b*');
可以了 很多问题,只要你肯自己动手搜索、并且尝试一下,就能解决的
页:
[1]