以编程方式使用MATLAB创建窗口时:
mainfigure = figure(...
'Units','Pixels',...
'Position',[5 40 1550 900]) % print to console to check
mainfigure % again just to be sure
...在显示器的可用区域内(从0到1919的水平方向,从36到1800的垂直方向),发生以下几种情况(大概有20%的可能性):
mainfigure = figure(...
'Units','Pixels',...
'Position',[5 40 1550 900])
mainfigure =
Figure (1) with properties:
Number: 1
Name: ''
Color: [0.9400 0.9400 0.9400]
Position: [5 40 1550 900]
Units: 'pixels'
Show all properties
>> mainfigure
mainfigure =
Figure (1) with properties:
Number: 1
Name: ''
Color: [0.9400 0.9400 0.9400]
Position: [2 36 1558 890]
Units: 'pixels'
Show all properties
创建后,窗口大小正确,但之后检查创建的图形似乎图形的大小不正确。
MATLAB(1558x890原点2,36)提供的确切错误大小值始终相同,但屏幕上显示的实际大小差异很大。
之后,将uicontrols添加到此图中会失败,控件被放置在整个地方,包括可绘制区域。
当将所述图形打印到PNG时,最终图像确实是预期的1550x900,但不在两个图形尺寸(1550x900和1558x890)内的区域显示白色或随机数据。
有没有人遇到过这个问题或有人能解释发生了什么事吗?
我正在使用MATLAB R2015a和CentOS 7。
编辑:此最小测试会100%重现错误:
mainfigure = figure(...
'Units','Pixels',...
'Position',[5 40 1550 900])
pause(0.5); % raises error chance from 20% to 100%
mainfigure
Edit2:,此手动测试可根据暂停时间创建一个随机大小的窗口数组:
clc;
clear all;
close all;
for i = 1:10
mainfigure = figure(...
'Units','Pixels',...
'Position',[15 45 1550 900]);
pause(0.1); % needs to be at least 0.1, otherwise creates bunch of randomly sized windows
end