User interface 在MATLAB中更新GUI轴
我正在为我创建的一个程序制作一个GUI,在这个程序中,我需要能够更改梁上荷载的位置。我已经正确设置了轴和滑块,但我不确定如何更新轴,因为我在互联网上找不到任何示例来说明如何进行更新 目前,当我移动负载时,位置会正确更新,但旧位置也会保留在屏幕上,这很烦人 有人能推荐一些好的例子来说明如何做到这一点,或者有人对如何刷新轴有什么建议吗User interface 在MATLAB中更新GUI轴,user-interface,matlab,User Interface,Matlab,我正在为我创建的一个程序制作一个GUI,在这个程序中,我需要能够更改梁上荷载的位置。我已经正确设置了轴和滑块,但我不确定如何更新轴,因为我在互联网上找不到任何示例来说明如何进行更新 目前,当我移动负载时,位置会正确更新,但旧位置也会保留在屏幕上,这很烦人 有人能推荐一些好的例子来说明如何做到这一点,或者有人对如何刷新轴有什么建议吗 这是滑块回调(我没有包括create_fcn函数)。另外,代码中有很多注释,因为我使用了Guide函数来制作GUI 请注意,滑块的输入是梁总长度的一个比例(十进制)
这是滑块回调(我没有包括create_fcn函数)。另外,代码中有很多注释,因为我使用了Guide函数来制作GUI 请注意,滑块的输入是梁总长度的一个比例(十进制) 显然,我希望保持绘制其他线条,但在移动滑块时更改PL1Draw。请你解释一下我要做什么 非常感谢
James我假设您已经绘制了一个梁,当您更改滑块值时,梁应该弯曲。由于您能够将新位置绘制到轴中,因此我假设您知道如何编写回调。我进一步假设情节的某些部分应该保持不变,而某些部分应该改变 要更改需要更改的零件,最简单的方法就是删除它们,然后重新绘制。为了从绘图中删除特定项目,最好对其进行标记。因此,您的绘图将如下所示
%# remove the old position
%# find the handle to the old position by searching among all the handles of
%# the graphics objects that have been plotted into the axes
oldPosHandle = findall(handles.axes1,'Tag','position');
delete(oldPosHandle);
%# plot new position
PL1Draw = line([zpl1 zpl1],[SH/2 PL1*10]);
%# add the tag so that you can find it if you want to delete it
set(PL1Draw,'Tag','position');
注1
要使GUI响应更快(如果需要),请不要删除和重新打印,而是更改旧位置对象的“扩展数据”和“YData”属性
注2
如果尚未执行此操作,请将plotting函数(更新绘图中的所有内容,而不仅仅是加载位置的函数)放在单独的函数中,而不是放在滑块的回调中,并让滑块回调调用plot函数。通过这种方式,您可以从几个按钮和滑块调用相同的绘图函数,这使得代码更易于维护
编辑
我已经更新了命令。请注意,没有特殊的“标记”功能“标记”是每个图形对象的属性,如“单位”或“颜色”。它只是帮助您标记图形对象,这样您就不需要记住控制柄。我假设您已经绘制了一个梁,该梁应该在更改滑块值时弯曲。由于您能够将新位置绘制到轴中,因此我假设您知道如何编写回调。我进一步假设情节的某些部分应该保持不变,而某些部分应该改变 要更改需要更改的零件,最简单的方法就是删除它们,然后重新绘制。为了从绘图中删除特定项目,最好对其进行标记。因此,您的绘图将如下所示
%# remove the old position
%# find the handle to the old position by searching among all the handles of
%# the graphics objects that have been plotted into the axes
oldPosHandle = findall(handles.axes1,'Tag','position');
delete(oldPosHandle);
%# plot new position
PL1Draw = line([zpl1 zpl1],[SH/2 PL1*10]);
%# add the tag so that you can find it if you want to delete it
set(PL1Draw,'Tag','position');
注1
要使GUI响应更快(如果需要),请不要删除和重新打印,而是更改旧位置对象的“扩展数据”和“YData”属性
注2
如果尚未执行此操作,请将plotting函数(更新绘图中的所有内容,而不仅仅是加载位置的函数)放在单独的函数中,而不是放在滑块的回调中,并让滑块回调调用plot函数。通过这种方式,您可以从几个按钮和滑块调用相同的绘图函数,这使得代码更易于维护
编辑
我已经更新了命令。请注意,没有特殊的“标记”功能“标记”是每个图形对象的属性,如“单位”或“颜色”。它只是帮助您标记图形对象,这样您就不需要记住句柄。与实际问题无关,但与项目相关:
这本书仍然可以在亚马逊上使用,它可能会为你节省很多材料力学方面的编码。大约12年前,我还是一名本科生时写过这篇文章,但我认为MATLAB代码应该仍然是功能性的。与实际问题无关,但与项目相关:
这本书仍然可以在亚马逊上使用,它可能会为你节省很多材料力学方面的编码。大约12年前,我还是一名本科生时写过这篇文章,但我认为MATLAB代码仍然应该是功能性的。Jonas,谢谢你的回答,但我不完全理解如何使用你指定的标记函数(这是我第一次尝试制作GUI。请参阅下面我的答案,以及我的一些源代码)(我无法将所有代码都放在窗口中)。希望这会让事情变得更清楚一些。Jonas,谢谢你的回答,但我不完全理解如何使用你指定的标记功能(这是我第一次尝试制作GUI。请参阅下面我的答案,以及我的一些源代码(我无法将所有代码放在窗口中).希望这能让事情澄清一点。