8

保存图形时,Matlab使用什么函数?例如,当用户选择文件 > 另存为...,然后选择 .png 或其他图像格式时,幕后发生了什么?

我之所以问,是因为我正在尝试自动保存,但是当我使用saveasor时print,生成的图像确实是像素化的。但是,当我使用上述方法保存图形时,图像看起来非常好。

我应该使用什么方法从命令行保存我的图形?数字窗口使用的实际方法会起作用,但如果你们有更好的解决方案,我会应用它!

4

2 回答 2

9

“另存为...”菜单项的回调调用函数 FILEMENUFCN,第一个输入参数是菜单所在图形的句柄,第二个输入参数是字符串'FileSaveAs'。如果您将图形句柄存储在变量hFigure中,则以下命令应等效于单击该图形窗口中的“另存为...”菜单项:

>> filemenufcn(hFigure,'FileSaveAs');


一些笔记...

  • 功能 FILEMENUFCN 仅部分记录。您可以help filemenufcn在命令窗口中执行此操作,但在线文档中没有相关条目。在 MATLAB 2009a 中,可以在以下文件夹中找到该函数:

    C:\Program Files\MATLAB\R2009a\toolbox\matlab\uitools\filemenufcn.m
    

    查看函数代码,它似乎最终为 .fig 文件调用函数SAVEAS或为其他文件类型调用函数HGEXPORT(带有附加输入参数)。

  • 通过搜索图形窗口及其菜单的子项,我能够找到“另存为...”菜单项的回调。您可以通过将root 属性'ShowHiddenHandles'设置为,然后使用GET命令'on'遍历图形窗口及其菜单的'Children'属性来自己执行此操作。另一种方法是使用FINDALL命令,假设您知道要查找的对象的某些属性。例如,这将找到当前图形窗口的“文件”菜单的句柄:

    >> hFileMenu = findall(gcf,'Label','&File');
    

    这将找到“另存为...”菜单项的句柄并显示其回调:

    >> hSaveAs = findall(hFileMenu,'Label','Save &As...');
    >> get(hSaveAs,'Callback')
    ans =
    filemenufcn(gcbf,'FileSaveAs')
    
于 2010-09-21T18:26:13.227 回答
2

我不了解你,但对我来说,保存的图像看起来不错。

代码示例:

... create some figure ...
saveas(gcf, 'some_figure.png');

要设置用户指定的分辨率,请使用:

print(gcf,'some_figure','-dpng','-rSOMENUMBER')

其中 SOMENUMBER 是用于分辨率的参数。最终分辨率为 (SOMENUMBER*8) x (SOMENUMBER*6)

于 2010-09-21T18:25:28.903 回答