2014-11-04 4 views
0

Я пытаюсь создать простой графический интерфейс в Matlab, чтобы показать серию изображений с панелью инструментов, чтобы обеспечить основные функции, связанные с текущим изображением. Но я заметил, что вызов «imshow» вызывает исчезновение пользовательской панели инструментов в окне рисунка. Любая идея, как изменить поведение, чтобы панель инструментов сохранялась? Или на него не влияет вызов «imshow»?Пользовательская панель инструментов исчезает с вызовом imshow

Соответствующий код:

% create viewer window 
win_viewer = figure('Visible', 'on', 'Name', 'Sample', ... 
    'Position', [0 0 200 200], 'NumberTitle', 'off', 'Toolbar', ... 
    'none', 'MenuBar', 'none', 'Resize', 'off', 'Color', ... 
    [0 0 0]); 

gui_toolbar = uitoolbar('Parent', win_viewer); 

% add save button 
icons = load('icons.mat'); 
gui_save = uipushtool('Parent', gui_toolbar, 'CData', icons.disk{1}, ... 
    'ClickedCallback', {@cb_saveImage}, 'TooltipString', ... 
    'Save Movie'); 

% create axes 
win_axes = axes('Parent', win_viewer); 
axis off; 

% this is called multiple times 
imshow(im, 'Parent', win_axes, 'Border', 'tight'); 
imshow(im, 'Parent', win_axes, 'Border', 'tight'); 

До "imshow" вызова на панели инструментов появляется и работает, как ожидалось. Но как только изображение будет показано, панель инструментов исчезнет.

Редактировать: Я просто играл с ним немного, и это только последующие вызовы «imshow», которые немного заставляют панель инструментов. Я обновляю код для двух вызовов, чтобы подчеркнуть это.

+0

Он остается в моей системе (R2014b), но, возможно, вы можете попытаться проверить дескриптор панели инструментов 'gui_toolbar.isvalid', чтобы убедиться, что это просто не видно, и в этом случае вы можете снова включить его. – chappjc

+0

Также убедитесь, что свойство «WindowStyle» фигуры НЕ установлено в «модальный»: проверьте раздел «советы» здесь: http://www.mathworks.com/help/matlab/ref/uitoolbar.html –

+0

Спасибо для предложений. Я тоже использую R2014b, но понял, что это только второй вызов imshow, который заставляет панель исчезнуть (я уточнил, что в моем вопросе). «Isvalid» становится ложным при последующем вызове «imshow», и доступ к другим свойствам панели инструментов приводит к ошибке «удаленный объект». Окно не является модальным. –

ответ

0

Попробуйте установить HandleVisibility на панели инструментов off перед использованием imshow.

+0

Удивительно, это делает трюк! Спасибо. –

Смежные вопросы