我已经通过GUIDE设计了一个用于图像分析的MATLAB GUI。我需要在函数之间共享数据,所以我使用了guidata
函数并将其存储在handle-object中,因为它已被记录(http://www.mathworks.de/de/help/matlab/ref/guidata.html)。
对于自动生成的回调函数(自动接收句柄),这很有效,但是我还想修改自编函数和自编回调函数中的数据(比如点击图像事件)。我尝试手动传递handle对象,这使我可以读取数据,但无法存储它。我也尝试传递对象句柄,使用guidata(hObject, handles)
但是对象句柄不起作用。
简而言之:我需要一种方法来读取和写入文件中所有函数的数据。我正在寻找一种更优雅的方式,而不是让一切都变得全球化。那将是我的最后一招。
你有什么想法吗?
答案 0 :(得分:1)
在GUI中,您可以使用函数setappdata
/ getappdata
来存储和共享函数之间的数据结构(link to docs)。
您可以将图形用作手柄。例如:
appData = struct;
appData.image = someImage;
appData.title = "someTitle";
setappdata(handles.figure1,'data',appData);
稍后,您将handles
传递给您的函数,然后您可以检索您的数据:
function showTitle(handles)
appData = getappdata(handles.figure1,'data');
title = appData.title;
newTitle = "someNewTitle";
appData.title = newTitle;
setappdata(handles.figure1,'data',appData);
编辑:刚刚找到了这个link,它指定了在回调中共享数据的多种策略。
答案 1 :(得分:0)
非常感谢你!我在尝试生成可复制的示例时发现了错误。在我的情况下,我在一个函数中使用图像句柄而不是图形句柄,因为它是一个图像点击回调,在该函数内部重新绘制图像,因此句柄不再有效。 我现在使用 gcf 来获取数字句柄,它可以正常工作。