【问题标题】:Why does Matlab set the background white when saving a scope printed to figure?为什么Matlab在保存打印为图形的范围时将背景设置为白色?
【发布时间】:2016-07-14 11:59:52
【问题描述】:

我想以编程方式“打印以绘制” Simulink 范围并将生成的图保存到文件夹中。

考虑遵循 Simulink 模型并选择范围:

我运行以下代码(灵感来自this question):

scopeName=get_param(gcb,'Name');
hs=findall(0,'Name',scopeName);
hf=figure(1);
hp=findobj(hs.UserData.Parent,'Tag','VisualizationPanel');
copyobj(hp,hf)
filename='test.tiff';
print('-dtiff',filename);

虽然范围和图形都有黑色背景

保存的文件背景为白色

print 命令有什么问题吗?

【问题讨论】:

    标签: matlab plot visualization matlab-figure simulink


    【解决方案1】:

    默认情况下,MATLAB 在打印到图形时会反转背景颜色。为了解决这个问题,您可以将InvertHardCopy 设置为'off'

    set(gcf, 'InvertHardCopy', 'off')
    

    这样做(与使用 getframe 不同)会产生更高分辨率的图像,因为 getframe 只是将图形保存为屏幕分辨率 (72dpi)。

    另一种选择是使用export_fig from the MATLAB file exchange 保存图形,这样可以更可靠地再现屏幕上的图像。

    【讨论】:

      【解决方案2】:

      您可以获得与您看到的相同的视图:

      img = getframe(gcf);
      imwrite(img.cdata,'test.tiff');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-11
        • 1970-01-01
        • 2018-01-29
        • 2015-07-28
        • 2013-02-09
        • 2020-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多