MATLAB进行GUI程序设计时,一个figure中通常包含多个axes控件。

保存矢量图的常用指令saveas和print只能以figure为单位保存图片,而不能将figure中的某一个axes单独保存。

而getframe+imwrite的方法虽然可以保存axes,但只能将窗口显示范围的像素点保存为位图,不能保存为矢量图,必定造成图像在放大时变模糊。

 

下面给出一种解决方案。

创建一个新的、不可见的figure和axes,将要保存的axes内容复制至新的axes中,并保存新的figure。

由于新的figure中只有1个axes,所以相当于至保存了一个axes。

 

h=get(handles.axes1,\'children\');
figure(\'visible\',\'off\');
axes;
copyobj(h,gca);
saveas(gcf,filename,\'emf\');

 

上面代码的缺陷在于,无法控制矢量图的质量

可以通过使用print函数解决

h=get(handles.axes1,\'children\');
figure(\'visible\',\'off\');
axes;
copyobj(h,gca);
print(gcf,\'-zbuffer\',\'-dmeta\',\'-r1000\',filename);
% 将-dmata改为-dpng可以生成png图盘
% -r1000用于控制图片质量,数值越大质量越高

 

本系列文章允许转载,转载请保留全文!

【说明&总目录】http://www.cnblogs.com/tbcaaa8/p/4415055.html

 

版权声明:本文为tbcaaa8原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/tbcaaa8/p/5014072.html