声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1528|回复: 4

[GUI界面] 为什么我在Axes中显示图片或画图后,Axes的Tag没有了

 关闭 [复制链接]
发表于 2007-11-28 17:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
如题,我的GUI里面有个Axes (Tag: axes1), 用axes(handles.axes1); plot(1:100,sin(1:100)); 显示图片后,我想加入一下操作:鼠标点击图片中某个地方然后用text命令显示信息。用了ButtonDownFcn加入text后却发现点鼠标并无反应,我检查才发现此时原本tag='axes1'的Axes控件的tag=''了。弄了好久也不行,请问这是什么问题,该怎么做? 谢谢!
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-11-29 09:48 | 显示全部楼层

是我表述的不购清除吗

我写个例子吧,我两次运行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
    [varargout{1: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)
[file,path] = uigetfile('*.jpg');
axes(handles.axes1);
str = strcat(path,file);
[X,map] = 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));
 楼主| 发表于 2007-11-29 10:05 | 显示全部楼层

刚刚看了论坛以前的帖子

发现这样该可以在画出来到图片中用鼠标标记。 可是还是有个问题,这个方法只能在没有曲线的地方点标记,却不能在曲线上点。 为什么呢?
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*');
 楼主| 发表于 2007-11-29 10:14 | 显示全部楼层

不好意思了,这样就行了

原来给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

查看全部评分

发表于 2007-11-29 10:24 | 显示全部楼层
很多问题,只要你肯自己动手搜索、并且尝试一下,就能解决的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 09:57 , Processed in 0.054978 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表