如何保存将在没有matlab的计算机上运行的gui图的图形

时间:2016-06-12 15:22:08

标签: matlab user-interface matlab-figure matlab-guide

我已经编写了一个Gui程序,我编译到EXE应用程序,其中有很多csv文件到图形数据中。我创建了一个保存按钮,但我不知道每次使用不同名称的保存图形(savefig和uisave都使用matlab程序)。如果你们想出如何将gui figue保存到图像或任何需要matlab打开的东西,我会在下面发布我的代码。最后一个函数是保存按钮的回调函数。

function ma_Callback(hObject, eventdata, handles)
% i tried uisave but not possible to run computer without matlab cause mcr
% does not run uisave
% i tried copyopbj but since i did not put a name on my figure it did not
% work
%savefig

1 个答案:

答案 0 :(得分:0)

如果您尝试从图中保存一种图像,那么支持许多方面的最佳选择是使用print功能。

我已经在一个已编译的应用程序中完成了这项工作,它完美无缺。使用打印功能,您可以设置不同的文件类型(也支持矢量格式,如* .svg),分辨率(dpi)等等。

虽然你可以直接在图上使用print函数,但我发现最好的方法(更多自定义,如删除或添加一些对象和更改许多选项)是按照以下步骤操作:

  1. 使用Visible='on'创建另一个数字,但屏幕外的位置与主图的宽度和高度相同。 归一化位置= [-1,-1,?,?] 。 (在启动时创建此图并且不要将其销毁,直到您的应用退出,然后将其称为Print Figure)。
  2. 使用copyobj将您的图形内容(或您感兴趣的部分)复制到该图中(您可能需要将某些关键对象的Parent属性设置为此图中的面板)。它们看起来与主图中看起来完全一样,因为它们具有相同的属性。您可以在此步骤中添加或删除某些对象。
  3. 更改"打印图"的宽高比为了更好的输出。
  4. 使用您需要的所有选项(文件格式,dpi,...)打印此图。在我自己的GUI中,我允许用户使用输入对话框更改此设置。
  5. 在我的应用程序中,当打印任务完成时,我使用winopen等函数向用户显示输出和输出目录。打印过程需要一些时间,特别是如果dpi很大,所以停用按钮和显示等待光标也是一个好主意。

    <强>更新

    一个简单的用法是:

    print(MainFigure, 'myFileName', '-dpng', '-r300')