主要内容

drawnow

更新图形和流程回调

描述

例子

drawnow更新图形并处理任何挂起的回调。如果您修改图形对象并希望立即在屏幕上看到更新,请使用此命令。

例子

drawnow limitrate限制每秒20帧的更新数。如果距离上次更新的时间少于50毫秒,或者如果图形渲染器忙于之前的更改,那么drawnow丢弃新的更新。如果您正在循环更新图形对象,并且不需要在屏幕上看到每次更新,则使用此命令。跳过更新可以创建更快的动画。挂起的回调将被处理,因此您可以在动画期间与图形交互。

drawnow nocallbacks延迟回调,例如ButtonDownFcn回调,直到下一次满drawnow命令。如果要防止回调中断代码,请使用此选项。延迟回调将暂时禁用图形交互,例如鼠标单击或调整图形大小。延迟回调不会影响动画速度。

Drawnow limitrate nocallback限制更新的数量为每秒20帧,如果渲染器繁忙则跳过更新。这种语法还可以防止回调中断代码,从而暂时禁用图形交互。

drawnow更新如果呈现器忙,则跳过更新并延迟回调。不推荐使用此语法。使用limitrate选项。

drawnow暴露更新数字,但延迟回调。不推荐使用此语法。使用nocallbacks选项。

例子

全部折叠

创建一个直线增长的动画,因为它累积了2000个数据点。使用drawnow在通过循环的每次迭代之后在屏幕上显示更改。

H = animatedline;轴([0 4*pi -1 1]) x = linspace(0,4*pi,2000);K = 1:长度(x) y = sin(x(K));addpoints (h, x (k), y);drawnow结束

制作一条直线累积10000点的动画。因为有10,000个点,所以在屏幕上绘制每次更新都很慢。通过限制使用的更新次数来创建更快、流畅的动画drawnow limitrate.然后,通过调用在屏幕上显示最终的更新drawnow在循环结束之后。

H = animatedline;轴([0 4*pi -1 1]) x = linspace(0,4*pi,10000);K = 1:长度(x) y = sin(x(K));addpoints (h, x (k), y);drawnowlimitrate结束drawnow

在动画循环之前计算所有数据。

H = animatedline;轴([0 4*pi -1 1]) x = linspace(0,4*pi,10000);Y = sinx;K = 1:长度(x)加点(h,x(K),y(K));drawnowlimitrate结束drawnow

如果要进行长时间的计算,则对数据进行预计算可以提高性能。预计算通过让计算不间断地运行来最小化计算时间。此外,它通过只关注动画循环中的图形代码来帮助确保动画的流畅。

更多关于

全部折叠

等同于行动drawnow

这些动作等同于调用fulldrawnow命令:

提示

  • nocallbacks选项始终向队列添加中断回调。如果要丢弃中断回调函数,请使用可中断而且BusyAction属性来代替。

版本历史

R2006a之前介绍