imshow()
GUIDE で生成された GUI には、GUI の初期化時にビットマップを挿入する Axes オブジェクトがあります。次のように定義された WindowButtonMotion コールバックがあります。
function theGui_WindowButtonMotionFcn(hObject, eventdata, handles)
% handles.mode_manager is initialized in the gui startup code
if (isempty(handles.mode_manager.CurrentMode))
obj_han=overobj('axes');
if ~isempty(obj_han)
set(handles.theGui, 'Pointer','cross');
else
set(handles.theGui, 'Pointer','arrow');
end
end
end
これを行うツールバーのファイルを開くボタンにコールバックがあります。
function openFile_ClickedCallback(hObject, eventdata, handles)
% handles.image_handle received the handle from the imshow that
% opened the initial image
tmp_handle = handles.image_handle;
[name, path] = uigetfile({'*.bmp'; '*.jpg'});
if (path == 0)
return
else
filename = strcat(path, name);
end
% read the image into the axes panel
hold on
handles.image_handle = imshow(filename);
set(handles.image_handle, 'ButtonDownFcn', @imageMouseDown);
handles.mode_manager = uigetmodemanager();
delete(tmp_handle);
guidata(hObject, handles);
end
新しいイメージが GUI の Axes オブジェクトに表示された後、ポインターは Axes オブジェクト上のクロスに変わりません。この問題は、新しく表示された画像に関係しています。実際に新しい画像を表示するコードの部分をコメント アウトすると、openFile コールバックを呼び出した後にポインターが十字として表示されるためです。