登录论坛

查看完整版本 : 在Matlab中,如何像在图形窗口中使用“另存为...”一样,将图形另存为图像?


poster
2019-12-10, 20:48
保存图形时,Matlab使用什么功能?例如,当用户选择“文件”>“另存为...”,然后选择.png或其他图像格式时,幕后发生了什么?

我问是因为我正在尝试自动进行保存,但是当我使用saveas或print ,生成的图像实际上是像素化的。但是,当我使用上述方法保存图形时,图像看起来确实不错。

我应该使用哪种方法从命令行保存图形?图形窗口使用的实际方法是可行的,但是如果你们有更好的解决方案,我建议您使用!



回答:

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

>> filemenufcn(hFigure,'FileSaveAs');
一些注意事项...


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

C:\Program Files\MATLAB\R2009a\toolbox\matlab\uitools\filemenufcn.m 通过功能代码来看,似乎它最终要么调用该函数SAVEAS (http://www.mathworks.com/help/techdoc/ref/saveas.html)为.FIG文件或功能HGEXPORT (http://www.mathworks.com/help/techdoc/ref/hgexport.html)其他文件类型(有额外的输入参数)。

通过搜索图形窗口及其菜单的子项,我能够找到“另存为...”菜单项的回调。您可以通过将根属性'ShowHiddenHandles' (http://www.mathworks.com/help/techdoc/ref/rootobject_props.html#ShowHiddenHandles)为'on' ,然后使用GET (http://www.mathworks.com/help/techdoc/ref/get.html)命令遍历图形窗口及其菜单的'Children'属性 (http://www.mathworks.com/help/techdoc/ref/figure_props.html#Children)来自己完成此操作。另一种方法是使用FINDALL (http://www.mathworks.com/help/techdoc/ref/findall.html)命令,假设您知道要查找的对象的某些属性。例如,这将找到当前图形窗口的“文件”菜单的句柄:

>> hFileMenu = findall(gcf,'Label','&File'); 这将找到“另存为...”菜单项的句柄并显示其回调:

>> hSaveAs = findall(hFileMenu,'Label','Save &As...'); >> get(hSaveAs,'Callback') ans = filemenufcn(gcbf,'FileSaveAs')


更多&回答... (https://stackoverflow.com/questions/3763175)