我附加了一个示例GUI代码,它有两个轴,有2个图像,当我使用ginput选择种子点时,我能够在任意一个轴上进行选择,无论如何都要将ginput限制为特定的轴
% --- Executes on button press in open.
function open_Callback(hObject, eventdata, handles)
% hObject handle to open (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global img1;
global img2;
img1 = imread('peppers.png');
img2 = imread('rice.png');
axes(handles.axes1);
imshow(img1,[]);
axes(handles.axes2);
imshow(img2,[]);
% --- Executes on button press in seedpointSelect.
function seedpointSelect_Callback(hObject, eventdata, handles)
% hObject handle to seedpointSelect (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global img1;
global img2;
global x;
global y;
axes(handles.axes1);
imshow(img1,[]);
[y,x] = ginput(handles.axes1);
y = round(y); x = round(x);
set(handles.xcord,'String',num2str(x));
set(handles.ycord,'String',num2str(y));
任何有关限制输入到特定轴的帮助,
谢谢, 戈皮
答案 0 :(得分:1)
在旧版本的MATLAB中,您曾经能够更改HitTest
的{{1}}属性,以忽略来自axes
的点击
ginput
更好的方法是使用set(handles.axes2, 'Hittest', 'off')
,因为您可以使用ButtonDownFcn
对象更好地控制鼠标事件。
从axes
OpeningFcn
然后您需要创建回调函数
set(handles.axes1, 'ButtonDownFcn', @mouseCallback)
答案 1 :(得分:0)
请勿使用ginput
,而是创建鼠标点击回调(ButtonDownFcn
)。例如,您可以将回调设置为从轴中删除回调函数。在设置回调的主程序中,然后waitfor
要更改该属性。用户单击后,您将立即获得控制权,然后您可以读取上次鼠标单击的位置(CurrentPoint
)。请注意,您读出的位置是轴坐标,而不是屏幕像素。这是一件好事,它很可能对应于显示的图像中的像素。