GUI句柄解释

2019-07-17 14:51发布

ti, simsun, sans-serif">在程序中有两句  temp = get(handles.totalArea,'userdata');
                       
                                  temp(3) = (temp(3) + a);           
                        set(handles.totalArea,'userdata',temp);
这两句具体意思是什么?不是应该先用set存放userdata再能get吗?两句得到的句柄一样吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
tulin
1楼-- · 2019-07-17 17:42
第一句是获取当前句柄中totalArea这个控件的userdata这个属性的值,set是将更新后的temp赋值给totalArea这个控件的userdata这个属性的值。整个操作下来就是对totalArea的userdata属性值的第三个元素做+a的处理。

评分

参与人数 1威望 +5 +1 积分 +5 收起 理由 assingle + 5 + 1 + 5 您的解答很精彩,

查看全部评分

tulin
2楼-- · 2019-07-17 21:22
另外记得整个结束后同步handles和hObject
youyoulan
3楼-- · 2019-07-18 02:06
tulin 发表于 2012-4-12 16:27
另外记得整个结束后同步handles和hObject

哦 谢谢 你能帮我看一段小程序吗?我求每条直线的平均值 可是只能算出总值 不知道怎么改 不太懂句柄

if 循环就是为了画直线  点击两点画直线。应该是在红 {MOD}部分加算平均值   且是完成每个if循环后,即直线画完后求平均handles.lengthPoints = [handles.lengthPoints ; x y];
hPlot = plot(x*A,y*A,'g.','markersize',10,'tag','point');
handles.hLengthPointsPlot = [handles.hLengthPointsPlot ; hPlot];

for j=1:2:100
if size(handles.lengthPoints,1)==j+1

points = A*handles.lengthPoints([j j+1],:);
hLine = plot(points(:,1), points(:,2), 'g', 'linewidth',2, 'ButtonDownFcn','calcArea(''axes1_ButtonDownFcn'',gca,[],guidata(gcbo))');
handles.lengthLines = [handles.lengthLines hLine];
dist = sqrt( sum((diff(points).^2)) );%前面有diff的定义

orientation = angle( diff(points) * [1 ; i] );%angle()是求相位角,angle()的取值是-pi到pi
h = text(mean( points(:,1) ), mean( points(:,2) ) , num2str(dist), 'Rotation', orientation);% 在中点位置显示直线长度

handles.hLengthData = [handles.hLengthData h];
temp = get(handles.totalArea,'userdata');

temp(3) = (temp(3) +dist);%求总和
set(handles.totalArea,'userdata',temp);

end

set(handles.totalArea,'userdata',temp);

updateTitle(handles);


end

guidata(hObject,handles);% guidata保存数据 更新数据


tulin
4楼-- · 2019-07-18 05:42
你把最后处理完的temp(3)除以直线数(不知道是不是50啊?),得到的数不就是你所要的平均值吗
youyoulan
5楼-- · 2019-07-18 06:56
 精彩回答 2  元偷偷看……
tulin
6楼-- · 2019-07-18 11:21
是在if的那个end后面啊,比如你要把它显示在GUI的某个控件(比如叫做eveArea)上,就用set(handles.eveArea,'value',temp(3)/50)就可以了。当然这个控件你得提前设计好。

一周热门 更多>