Я программирую графический интерфейс в Matlab для эксперимента, где участник теста будет просматривать серию изображений, а после каждого изображения отвечать рейтингом изображения.Как увеличить изображение фигуры Matlab при максимальном показе нового изображения?
Я хочу, чтобы окно максимально увеличивалось. Изображение будет отображаться в течение нескольких секунд, а затем удалено, некоторые слайдеры появятся для рейтинга. Затем слайдеры будут скрыты, и появится новое изображение и т. Д.
Что я до сих пор начинаю отлично с помощью окна с максимизированным рисунком, пока я не загружу изображение и не покажу его, используя imshow или image, что приводит к изменению размера окна фигуры и подгонки к изображению, а не к максимальному увеличению. Если я затем снова увеличиваю окно фигуры, это вызывает заметное мерцание из оконного кадра, которое было сначала максимизировано, затем изменено, а затем снова увеличено - мерцание, которое я бы хотел избежать.
Как я могу увеличить окно и отображать изображение со соотношением 1: 1 (не масштабируется или не изменяется в соответствии с максимальным окном)?
Мне известно о PsychToolbox, но у него вроде бы нет команд для создания слайдеров (которые я бы использовал для оценки), и я бы предпочел не делать этого с нуля. Я также заглянул в windowAPI из файлового обмена Matlab, но до сих пор не нашел решения.
Ниже приведен пример того, что я сейчас (с помощью Matlab R2013a на Windows 7 64-разрядная версия):
screenSize = get(0,'screensize');
screenWidth = screenSize(3);
screenHeight = screenSize(4);
% Create figure window, keeping it invisible while adding UI controls, etc.
hFig = figure('Name','APP',...
'Numbertitle','off',...
'Position', [0 0 screenWidth screenHeight],...
'WindowStyle','modal',...
'Color',[0.5 0.5 0.5],...
'Toolbar','none',...
'Visible','off');
% Make the figure window visible
set(hFig,'Visible','on');
% Maximize the figure window, using WindowAPI
WindowAPI(hFig, 'Position', 'work');
% Pause (in the full version of this script, this would instead be
% a part where some UI elements are shown and later hidden...
pause(1.0);
% Read image file
img = imread('someImage.png');
% Create handle for imshow, and hiding the image for now.
% This is where Matlab decides to modify the figure window,
% so it fits the image rather than staying maximized.
hImshow = imshow(img);
set(hImshow,'Visible','off');
% Show the image
set(hImshow,'Visible','on');
Спасибо, Christian
Спасибо за предложение - просто попробовал. Однако это масштабирует изображения. Мне нужно, чтобы изображение отображалось «как есть», от 1 пикселя до 1 точки на экране - не масштабировано. В другом примечании: эффект можно увидеть без использования 'WindowAPI (hFig, 'Position', 'work');' строка из моего примера кода. – ctp
@ user2994048 - Я смог воспроизвести его в конце концов. Что касается масштабов, я вижу проблему, и я думаю, вам нужно будет создать оси соответствующего размера и отобразить их. – chappjc
@ctp - Просто убедитесь, что создание «осей» и отображение в него с помощью параметра «Родительский» предотвращает изменение «imshow» либо фигуры, либо «осей». – chappjc