7

有没有办法将图形打印到剪贴板,以便质量与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来说不是。

感谢您的帮助。

4

2 回答 2

6

简短的回答......使用在该菜单项的回调中调用的相同函数:

editmenufcn(gcf,'EditCopyFigure');


更长的答案......我到底是怎么找到这个的?您可以查看我之前对有关重现文件菜单选项所做的相关问题的回答。概念是一样的,只是图形菜单不同。例如,这将为当前活动的图形窗口找到您想要的回调:

>> 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。

于 2010-12-15T19:04:26.990 回答
2

我想我自己找到了答案。使用print -dmeta -painters指定渲染器解决了我的问题。

File-->Preference-->Figure Copy Template-->Copy Option注意到有3个选项:

  1. 元文件
  2. 保存信息
  3. 位图

我发现如果我选择 1,Edit-->Copy Figure输出的图像与print -dmeta. 所以我有点确认我需要的信息在Preserve information选项中。快速的谷歌搜索让我讨论了应用渲染器的潜在差异,最终我确认使用painters会以我想要的方式将图像打印到剪贴板。

问题中的图像似乎分别由渲染器zbuffer和生成painters。不过,我仍然不知道为什么paint -dmeta更改的默认渲染器。

于 2010-12-15T22:26:38.930 回答