Matlab getrect函数 - 如何跳过鼠标输入

时间:2015-03-30 13:25:47

标签: matlab matlab-figure matlab-guide

在Matlab GUI中,我需要用户鼠标输入作为矩形,我必须在axes1上绘制。

为此,我的代码如下:

   axes(handles.axes1);
   filename = 'A';
   img = imread(filename);
   imshow(img);
   hold on;
   rect_cord = getrect(handles.axes1);
   rectangle('Curvature', [0 0],'Position', [rect_cord],'EdgeColor',[1 0 0]);

此代码运行正常(接受用户输入并绘制矩形)。但是,对于某些图像,我不想从鼠标获取用户输入(使用getrect)。在这种情况下,如何跳过getrect函数并继续下一个图像?

我有一个按钮("下一个"),我想在按下按钮时显示下一个图像而不是用户输入。

谢谢,

1 个答案:

答案 0 :(得分:1)

我会尝试重新修改和修改一下:如果单击轴或图像,您想要绘制一个矩形

因此: 首先,我建议将 getrect -part放入另一个函数中。只有单击图像才能触发此功能。所谓的" ButtownDownFcn"似乎适合这份工作。使用GUIDE时,您会发现它双击弹出的属性检查器中的轴。 然后将 getrect -part放入此函数:

function axes1_ButtonDownFcn(hObject, eventdata, handles)
% hObject    handle to axes1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
rect_cord = getrect(handles.axes1);
rectangle('Curvature', [0 0],'Position', [rect_cord],'EdgeColor',[1 0 0]);

现在我认为这就是必须要做的一切。但是用轴内的图或图像进行测试证明我错了:o

遗憾的是,必须将轴的子项重定向到此函数,因为默认情况下,它仅分配给轴的背景(=空轴)。

通过搜索网络,我在这里找到了以下解决方案: Matlab in Chemical Engineering: Interacting with your graph through mouse clicks

它的工作方式如下: 在绘制图像时,您必须添加行

% and we also have to attach the function to the children, in this
% case that is the line in the axes.
set(get(gca,'Children'),'ButtonDownFcn', @mouseclick_callback)

希望有所帮助!