为什么Matlab在保存打印到图中的范围时将背景设置为白色?

时间:2016-07-14 11:59:53

标签: matlab plot visualization matlab-figure simulink

  

我想以编程方式'打印到'计算'Simulink范围并将结果图保存到文件夹。

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

enter image description here

我运行以下代码(受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);

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

enter image description here

保存的文件有白色背景

enter image description here

print命令或其他内容是否有问题?

2 个答案:

答案 0 :(得分:1)

您可以看到相同的视图:

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

答案 1 :(得分:1)

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

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

执行此操作(与使用getframe相反)会产生更高分辨率的图像,因为getframe只是将图形保存在屏幕分辨率(72dpi)。

另一种选择是使用export_fig from the MATLAB file exchange来保存数字,以便更可靠地重现屏幕上的图像。