保存图形时,Matlab使用什么函数?例如,当用户选择文件 > 另存为...,然后选择 .png 或其他图像格式时,幕后发生了什么?
我之所以问,是因为我正在尝试自动保存,但是当我使用saveas
or时print
,生成的图像确实是像素化的。但是,当我使用上述方法保存图形时,图像看起来非常好。
我应该使用什么方法从命令行保存我的图形?数字窗口使用的实际方法会起作用,但如果你们有更好的解决方案,我会应用它!
“另存为...”菜单项的回调调用函数 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')
我不了解你,但对我来说,保存的图像看起来不错。
代码示例:
... create some figure ...
saveas(gcf, 'some_figure.png');
要设置用户指定的分辨率,请使用:
print(gcf,'some_figure','-dpng','-rSOMENUMBER')
其中 SOMENUMBER 是用于分辨率的参数。最终分辨率为 (SOMENUMBER*8) x (SOMENUMBER*6)