我在尝试使我的MATLAB GUI 自动调整大小时遇到了问题.在彻底搜索网络寻求帮助和大量测试之后,我找不到解决方案.
我一直在笔记本电脑中开发一个简单的GUI(使用MATLAB,不使用GUIDE)(屏幕尺寸/分辨率= 1366x768).一个非常简化的版本如下所示:

当我在台式计算机中运行相同的GUI(屏幕大小/分辨率= 1920x1080)时,它以下列方式显示:

GUI的尺寸会在考虑屏幕尺寸的情况下自动初始化(代码在本文的底部提供).如您所见(红色箭头突出显示),组件之间的字体/间距不会自动调整大小,因此无论我们在何处运行文件,GUI都具有相同的方面.
此外,当手动调整GUI大小时,会出现一些组件重叠:

用于此最小工作示例的代码如下:
function resizingGUIexample()
%% SET UP GUI
hdl.mainfig = figure();
% MANAGE FIGURE DIMENSIONS -------------------------------------------------------------------------------------
set(hdl.mainfig, 'Units', 'pixels');
dims = get(0, 'ScreenSize');
screenHeight = dims(4);
verticalMargins = floor((0.2*screenHeight)/2); % =10% of the screen height in each side
figureHeight = (0.8*screenHeight);
figureWidth = (0.8*screenHeight)*(4/3); % 4/3 Aspect Ratio
set(hdl.mainfig, 'Position', [0, verticalMargins, ...
figureWidth, figureHeight]);
movegui(hdl.mainfig,'center') % move GUI to center
color = …Run Code Online (Sandbox Code Playgroud) 我一直在编写一些MATLAB GUI(不使用GUIDE),主要用于查看图像和其他一些简单的操作(例如选择点和绘制图像中的一些数据).
GUI启动时,所有操作都会快速执行.但是,由于使用了GUI(显示了来自3D/4D卷的不同帧并执行了上述操作),因此它开始变得越来越慢,达到了普通使用速度太慢的程度.
我想听听一些有关以下方面的意见:
我正在使用set/getappdata将变量保存在GUI的主图中并在函数之间进行通信.
(我希望我能提供一个最小的工作示例,但我不认为它适用于这种情况,因为这只发生在更复杂的GUI中.)
非常感谢.
编辑:( 使用探查器报告一些调查结果:)
我曾两次使用剖析器:
我在两个分析操作中都执行了完全相同的过程,这只是简单地在GUI周围移动鼠标(两次都是相同的"路径").
分析器结果如下:

我在解释这些结果时遇到了困难......为什么impixelinfo在第二种情况下某些函数(如)的调用次数如此之大?
任何意见?
非常感谢.