在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函数并继续下一个图像?
我有一个按钮("下一个"),我想在按下按钮时显示下一个图像而不是用户输入。
谢谢,
答案 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)
希望有所帮助!