创建

时间:2017-01-16 13:13:57

标签: matlab

以编程方式使用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

0 个答案:

没有答案