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