有没有办法将图形打印到剪贴板,以便质量与Edit-->Copy Figure
选项提供的相同?
我曾经使用从Matlab Central获得的saveppt.m将图形保存到powerpoint文件中。它一直运作到昨天。我注意到存储的图像质量有所降低。我尝试使用完全相同的脚本和相同的源数据重新生成一些ppt幻灯片,但新幻灯片质量更差。
我稍微研究了这个问题并发现当通过运行print -dmeta
将图形复制到剪贴板时,剪贴板中的图像已经降级,而如果我使用Edit-->Copy Figure
选项在图形窗口中,我得到的图像与图窗口中的原始图像一样清晰。
以下是供您参考的示例。我通过两种不同的方法将图像从图形复制到剪贴板,然后将其粘贴到Microsoft Paint程序中,并将其中的一部分剪切到下面显示:
使用print -dmeta
的图片:
使用Edit-->Copy Figure
的图片:
如果您将Xtick标签“50”进行比较,您可能会发现来自Edit-->Copy Figure
的图片更加流畅。
一开始我认为这是分辨率的问题,但设置-rN
来改变分辨率似乎并不能解决我的问题,至少不是N <= 300。
感谢您的帮助。
答案 0 :(得分:6)
答案简短...... 使用该菜单项回调中调用的相同函数:
editmenufcn(gcf,'EditCopyFigure');
答案越久...... 我究竟是怎么发现的?您可以查看my previous answer到related question about reproducing what is done by a File menu option。这个概念是相同的,仅适用于不同的图形菜单。例如,这将为当前活动的图形窗口找到所需的回调:
>> hCopyFigure = findall(gcf,'Label','Copy &Figure'); %# Handle for the "Copy
%# Figure" menu item
>> get(hCopyFigure,'Callback') %# Callback invoked when that item is selected
ans =
editmenufcn(gcbf,'EditCopyFigure')
EDITMENUFCN函数是另一个稀疏记录的函数,但查看代码(通过键入edit editmenufcn.m
)表明它调用Java(如果你在Mac上)或未记录的函数UIMENUFCN。
答案 1 :(得分:2)
我想我自己找到了答案。使用print -dmeta -painters
指定渲染器可以解决我的问题。
在File-->Preference-->Figure Copy Template-->Copy Option
我注意到有3个选项:
我发现如果我选择1,则Edit-->Copy Figure
会输出与print -dmeta
相同的图像。所以我在Preserve information
选项中确认了我需要的信息。快速谷歌搜索引导我讨论应用渲染器的潜在差异,最终我确认使用painters
将以我想要的方式将图像打印到剪贴板。
问题中的图像似乎分别由渲染器zbuffer
和painters
生成。我仍然不知道为什么paint -dmeta
的默认渲染器会发生变化。