如何在显示新图像时使Matlab图形窗口最大化?
我正在用Matlab为一个实验编写一个GUI,在这个实验中,测试参与者将查看一系列图像,在每个图像之后,对图像进行评级 我希望始终保持窗口最大化。图像将显示几秒钟,然后删除,一些滑块将显示评级。下一步,滑块将被隐藏,一个新的图像将出现,等等 到目前为止,我得到的是一个最大化的图形窗口,直到我使用imshow或image命令加载一个图像并显示它,这会使图形窗口调整大小并适应图像,而不是保持最大化。如果我再次最大化图形窗口,它会导致窗口框架出现明显的闪烁,首先是最大化,然后调整大小,然后再次最大化-我希望避免这种闪烁 如何保持窗口最大化,并以1:1的比例显示图像(不缩放或调整大小以适应最大化的窗口) 我知道PsychToolbox,但它似乎没有创建滑块的命令(我将使用它进行评级),我不希望从头开始创建这些命令。 我还研究了Matlab文件交换中的windowAPI,但仍然没有找到解决方案 下面是我现在拥有的示例(在64位Windows 7上使用Matlab R2013a): 谢谢,如何在显示新图像时使Matlab图形窗口最大化?,matlab,user-interface,figure,Matlab,User Interface,Figure,我正在用Matlab为一个实验编写一个GUI,在这个实验中,测试参与者将查看一系列图像,在每个图像之后,对图像进行评级 我希望始终保持窗口最大化。图像将显示几秒钟,然后删除,一些滑块将显示评级。下一步,滑块将被隐藏,一个新的图像将出现,等等 到目前为止,我得到的是一个最大化的图形窗口,直到我使用imshow或image命令加载一个图像并显示它,这会使图形窗口调整大小并适应图像,而不是保持最大化。如果我再次最大化图形窗口,它会导致窗口框架出现明显的闪烁,首先是最大化,然后调整大小,然后再次最大化-
Christian尝试使用
'initial放大倍数'
参数和'fit'
选项值以及imshow
:
hImshow = imshow(img,'InitialMagnification','fit')
发件人:
还可以将文本字符串“fit”指定为初始放大率值。在这种情况下,imshow将缩放图像以适合地物窗口的当前大小
另请参见关于“初始放大率”
。所以,这应该保持你的图形窗口的大小相同
这将解决丢失窗口最大化的问题
要在屏幕上以1像素到1点的比例显示图像,您可以为图像创建一个正确大小的轴,并将其显示为:
fpos = get(hFig,'Position')
axOffset = (fpos(3:4)-[size(img,2) size(img,1)])/2;
ha = axes('Parent',hFig,'Units','pixels',...
'Position',[axOffset size(img,2) size(img,1)]);
hImshow = imshow(img,'Parent',ha);
请注意,没有必要指定放大率,因为“如果指定轴位置(使用子批次或轴),
imshow
会忽略您可能指定的任何初始放大率,并默认为'fit'
行为”,因此,适合于'Parent'
指定的轴。感谢您的建议-刚刚尝试过。但是,这会缩放图像。我需要的图像显示“原样”,1像素到1点在屏幕上-不缩放。另一方面:不使用WindowAPI(hFig,'Position','work'),就可以看到效果代码>我的代码示例中的行。@user2994048-毕竟我能够重现它。关于比例,我看到了这个问题,我认为您需要创建一个适当大小的轴并显示到该轴上。@ctp-刚刚验证了创建一个轴并通过'Parent'
参数显示到该轴上可以防止imshow
调整图形或轴的大小。是的!快到了!现在唯一的事情是图像被缩小了。可能与轴的大小有关?谢谢你迄今为止的帮助!我会试试看我是否能计算出最后一位…@ctp创建的轴的大小将是这样的图像大小。我不知道为什么它对你来说更小。如果您想放大,可以执行[axOffset scaleVal*[size(img,1)size(img,2)]]
。
fpos = get(hFig,'Position')
axOffset = (fpos(3:4)-[size(img,2) size(img,1)])/2;
ha = axes('Parent',hFig,'Units','pixels',...
'Position',[axOffset size(img,2) size(img,1)]);
hImshow = imshow(img,'Parent',ha);