5

一段时间以来,我一直在研究一系列 GUI。我使用运行 OSX 的 Mac 来编写我所有的代码,我遇到的问题是在 windows 中使用 GUI 时外观存在偏差,其中一些是次要的,而其中一些非常重要。

1)windows版本的文字总体上要大得多。这导致我的一些按钮标题简单地离开了按钮,或者面板标题超出了面板。

2) Mac 和 Windows 之间的轴似乎是不同的尺寸。即在我的 Mac 上显示为方形的轴在 Windows 上将显示为拉长或矩形,反之亦然。

3) 图形显示不同。这是真正的问题。我的一些 GUI 使用轴来显示文本和模拟化学反应动画。在 Mac 上,它们看起来非常好,但在 Windows 系统上,尺寸完全关闭。

我已按照 Mathworks 帮助页面的建议将所有“单位”设置为“字符”,并且我没有指定任何字体以允许每个系统使用其默认值。然而,我已经指定了字体大小,但显然,windows 上的 12 点字体与 mac 上的 12 点字体有很大不同。

有没有办法解决这些问题?我认为设置一个指定的字体大小并允许使用默认字体可以解决这个问题,但它没有,而且我在这一点上有点枯燥。

4

2 回答 2

0

我也遇到了这个问题。在 中调用此函数FUNCTIONNAME_OpeningFcn可能会缓解您的问题:

function decreaseFontSizesIfReq(handles)
% make all fonts smaller on a non-mac-osx computer
persistent fontSizeDecreased
fontSizeDecreased = [];
if ~ismac()
    % No MAC OSX detected; decrease font sizes
    if isempty(fontSizeDecreased)
        for afield = fieldnames(handles)'
            afield = afield{1}; %#ok<FXSET>
            try %#ok<TRYNC>
                set(handles.(afield),'FontSize',get(handles.(afield),'FontSize')*0.75); % decrease font size
            end
        end
        fontSizeDecreased=1; % do not perform this step again.
    end
end
于 2014-11-05T11:11:24.543 回答
0

尝试使用“像素”或绝对大小单位而不是“字符”,并将缩放因子应用于您的字体大小。

将“单位”设置为“字符”可能是为了便携性而采取的错误方法,并且可能是导致显示尺寸问题的主要原因。哪个特定的 Matlab 页面建议您这样做?是在谈论跨平台可移植性吗?该characters单元使用起来非常方便,但它与默认系统字体的字体规格相关联。(请参阅http://www.mathworks.com/help/matlab/ref/axes_props.html上的 Units 属性的文档)。这在不同的操作系统之间会有所不同。使用绝对的“像素”或英寸/厘米/点可能会在操作系统中为您提供更统一的结果。

你没看错:OS X 倾向于在比 Windows 更小的屏幕上显示给定大小的字体。(通常;YMMV 取决于您的显示 DPI 和系统设置等。)例如,我在 Windows 中以 10 或 12 点运行我的终端和文本编辑器,但在 Mac 上运行 14 点或更大。因此,将缩放因子应用于您在 GUI 中设置的字体大小。找出在 Mac 上看起来不错的东西,然后在你的代码中将它缩放到类似的东西windows_font_size = floor(mac_font_size * 0.8),看看它是如何进行的。

如果您想更精确地缩放,您可以使用 获取ScreenPixelsPerInchScreenSizeroot 属性get(0,...)。您还可以调用 Java 代码以获取精确的字体度量信息,以帮助选择字体缩放。

无论哪种方式,您都必须在两个系统上测试您的代码,而不是仅仅期望它可移植地工作。如果您无法访问 Windows 开发系统,请考虑在 Mac 上设置 Windows VM。通过双方之间的文件共享,您将能够在使用它的同时在两个平台上试用您的代码。

于 2014-03-12T08:42:30.607 回答