MATLAB GUI 程序设计中将axes保存为高质量矢量图的方法

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

 

posted @ 2015-12-02 20:22  橴樰  阅读(4527)  评论(1编辑  收藏  举报