我正在尝试使用GUIDE创建一个Matlab GUI。我只想在按下按钮(回调功能)时插入带有图片的图片,并在按钮释放后显示默认图片。我该如何实现呢?我使用轴在上述位置显示图片
function mc_right_Callback(hObject, eventdata, handles)
% hObject handle to mc_right (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
matlabImage2 = imread('Coor2.png');
imshow(matlabImage2, 'Parent', handles.axes7);
%Vxm_Port_Send(handles.port_handle,sprintf('F,C,I3M-%d,R',handles.x_steps)); % Move along +x (right)
答案 0 :(得分:1)
问题是MATLAB uicontrols不允许您创建单独的回调函数,这些函数在按下按钮或按钮释放时执行。例如,按钮将在按钮释放时执行其Callback
function。它还有一个ButtonDownFcn
function,可以在按下按钮时执行,但此回调仅在Enable
property设置为'off'
或'inactive'
时有效,在这种情况下{ {1}}功能已禁用。换句话说,您不能同时使用Callback
和ButtonDownFcn
来获取按钮按下和释放的响应。
...然而
figure window确实可以为button presses,button releases甚至mouse motion或scroll wheel activity指定单独的回调函数。这就是我通常克服uicontrol行为中的缺点的方法:我定义了当它们超过窗口某些部分时执行的图形级回调。这是一个例子:
Callback
当您运行上面的操作时,它会在左下角创建一个带有轴和小按钮的窗口。该按钮没有定义回调。当您在任何地方单击鼠标但在按钮上方没有任何反应时。但是,当您在按钮上单击鼠标(使其成为图中的CurrentObject
)时,图像将变为可见,按住按钮时按钮将会按下。释放按钮使图像再次不可见,按钮显示正常。从本质上讲,按钮只是一个虚拟的东西,除了给用户一种幻觉,他们正在按下它以使事情发生。这真是人物回调做的工作。