MATLAB 2014b getframe вызывает «пустой» пользовательский интерфейс

В настоящее время я разрабатываю сложное приложение MATLAB. Я пытаюсь сохранить цифры (созданные в его пользовательском интерфейсе) с помощью функции getframe. Это отлично работает и сохраняет фигуру, как предполагалось. Однако пользовательский интерфейс «опустошается» после каждого использования. Окно остается, но становится равномерным белым прямоугольником. При наведении курсора на функции в пользовательском интерфейсе они снова появляются (как туман войны). Добавление оператора refresh не помогло.

Почему это происходит? Как мне остановить это?

Раздражает, что этого не происходит в 2018a, но код находится в 2014b, что проблематично (что-то, что я обнаружил после того, как был доволен своим классным исправлением :()).

К сожалению, размещение кода невозможно, потому что у меня нет разрешения на его распространение.


person Jgd    schedule 19.09.2018    source источник
comment
Как бы вы сделали это в 18а?   -  person Marouen    schedule 19.09.2018
comment
Упс, я сделал ошибку; внесет правку. Я сделал это так же, но этой проблемы с гашением не существовало.   -  person Jgd    schedule 20.09.2018


Ответы (1)


ОК, после долгих поисков мне не удалось найти прямое решение. Но я реализовал косвенное решение.

refresh

не работал, поэтому я реализовал принудительную перерисовку вручную. т.е. Я дрожу экран после getframe на 1 пиксель, который перерисовывает окно.

figpos = fig.Position;    
jitter = figpos;
jitter(3) = jitter(3) + 1;
jitter(4) = jitter(4) + 1;
set(fig,'Position',jitter);
set(fig,'Position',figpos);

Вероятно, нет необходимости расширять и сокращать как ширину, так и высоту окна, но он отлично справляется со своей задачей.

person Jgd    schedule 20.09.2018