主要内容

drawnow

更新数据和处理回调

描述

例子

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

例子

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

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

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

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

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

例子

全部折叠

创建一条随着积累2000个数据点而增长的线的动画。使用drawnow以便在循环的每次迭代之后在屏幕上显示更改。

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

创建一条线在积累10000点时增长的动画。因为游戏中有1万个点,所以在屏幕上绘制每个更新内容的速度很慢。通过限制更新的数量来创建一个更快、更流畅的动画drawnow limitrate.然后,在屏幕上通过调用drawnow循环结束后。

h = animatedline;轴([0 4*pi -1 1]) x = linspace(0,4*pi,10000);K = 1:长度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 = sin (x);K = 1:length(x) addpoints(h,x(K),y(K));drawnowlimitrate结束drawnow

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

更多关于

全部折叠

的行为相当于drawnow

这些操作相当于调用fulldrawnow命令:

提示

  • nocallbacks选项总是向队列添加中断回调。如果您想放弃中断回调,则使用可中断BusyAction属性来代替。

之前介绍过的R2006a