保存图形文件时的MATLAB回调

时间:2015-06-15 08:51:25

标签: matlab callback matlab-guide

我需要检查programmaticall是否保存了fig(指南)文件,所以基本上我需要回调:

myfigure_SavedCallback(hObject, varargin)

我没有在网上找到任何东西,所以我想这是不可能的,有人可以验证这个吗?

解决:

所以我自己就知道如何做到这一点。在指南编辑器中,您可以打开Toolbar Editor并更改gui通常具有的所有图标按钮。字段Clicked Callback在某处。您可以输入常规的回调形式,例如

mygui('uipushtool2_ClickedCallback',hObject,eventdata,guidata(hObject))

并将此回调添加到代码中。在该特定回调中,如果需要,可以处理已保存/未保存的UD标志。

3 个答案:

答案 0 :(得分:1)

不,据我所知,在保存时执行的数字(或其他HG组件)没有回调。

但是,我认为你可以解决这个问题。您可以创建自己的对象,在保存代码时执行代码 - 如下所示:

sender

然后,您可以创建其中一个对象,并将其存储在例如图的classdef mytest < handle methods function sobj = saveobj(obj) sobj = obj; disp('saved') % Put your code here end end end 属性中。当图形被保存时,对象也会被保存,并且您希望执行的任何代码都将被执行。

我想可能有一些方法可以通过用户可以做的各种事情来击败上述解决方法。但要小心,它可能足以满足您的需求。

答案 1 :(得分:0)

检查图像是否已手动保存:

您可以检查图中的Filename字段是否为空。一旦图形被保存,它就会获得已保存图形的路径。

运行代码并自己手动保存图形。

clc
close all
clear

img = imread('cameraman.tif');

h = figure(1);
imshow(img);

while(isempty(h.FileName))
    clc
    disp('not saved yet');
    pause(0.3)
end

disp('saved in:');
disp(h.FileName);

这会给你:

not saved yet
saved in:
C:\Users\samuel\Desktop\fig.fig
>> 

答案 2 :(得分:0)

所以我自己就知道如何做到这一点。在指南编辑器中,您可以打开工具栏编辑器并更改gui通常具有的所有图标按钮。字段Clicked Callback存在于某个地方。您可以输入常规的回调形式,例如

{{1}}

并将此回调添加到代码中。在该特定回调中,如果需要,可以处理已保存/未保存的UD标志。