我在Matlab中爲一個GUI進行GUI編程,實驗中測試參與者將查看一系列圖像,並在每個圖像之後響應圖像的評分。如何在顯示新圖像時保持Matlab圖形窗口最大化?
我要始終保持最大化的窗口。圖像將顯示幾秒鐘,然後移除,一些滑塊將顯示評級。接下來,滑塊將被隱藏,並出現一個新的圖像,等等...
我到目前爲止開始罰款與最大化的數字窗口,直到我加載圖像並顯示它,使用imshow或image命令,這會導致圖形窗口調整大小並適合圖像,而不是保持最大化。如果我再次使圖形窗口最大化,它會首先使窗框顯着閃爍,然後再調整大小,然後再次最大化 - 這是我想避免的閃爍。
我怎樣才能保持窗口最大化,並且在1顯示圖像:1的比例(不進行縮放或調整大小以適應最大化窗口)?
我知道PsychToolbox,但它似乎沒有創建滑塊(我將用於評級)的命令,我寧願不必從頭開始做這些。 我也研究過從Matlab File Exchange的windowAPI,但還沒有找到解決方案。
下面是我現在(用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');
感謝, 基督教
感謝您的建議 - 只是試了一下。但是,這會縮放圖像。我需要將圖像「按原樣」顯示,屏幕上顯示1像素至1點 - 不縮放。 另一個說明:可以看到效果不使用'WindowAPI(hFig,'Position','work');' line from my code example。 – ctp
@ user2994048 - 我終於可以重現它了。關於規模,我看到了這個問題,我認爲你需要創建一個合適大小的軸並將其顯示。 – chappjc
@ctp - 剛剛驗證過,創建一個'axes'並通過''Parent''參數顯示到''中可防止'imshow'調整圖形或'axes'的大小。 – chappjc