drawnow

更新图形和处理回调

描述

例子

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

例子

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

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

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

drawnow更新如果渲染器繁忙,则跳过更新,并延迟回调。不建议使用此语法。使用limitrate选项。

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

例子

全部折叠

创建一条线的动画,它积累了2,000个数据点。使用drawnow以便在循环的每次迭代之后在屏幕上显示更改。

h = animatedline;x = linspace(0,4*pi -1);k = 1:length(x) y = sin(x(k))addpoints (h, x (k), y);drawnow结束

创建一条线的动画,当它积累了10,000个点时,它就会增长。由于有10,000个点,在屏幕上绘制每个更新都很慢。创建一个更快,平滑的动画,通过限制数量的更新使用drawnow limitrate。然后,通过调用在屏幕上显示最后的更新drawnow循环结束后。

h = animatedline;x = linspace(0,4*pi -1);k = 1:length(x) y = sin(x(k))addpoints (h, x (k), y);drawnowlimitrate结束drawnow

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

h = animatedline;x = linspace(0,4*pi -1);y = sin (x);k = 1:长度(x)加点(h,x(k),y(k));drawnowlimitrate结束drawnow

如果需要进行长时间的计算,预计算数据可以提高性能。预计算通过让计算在不中断的情况下运行来最小化计算时间。此外,通过只关注动画循环中的图形代码,它有助于确保动画的平滑。

更多关于

全部折叠

的行为相当于drawnow

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

提示

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

之前介绍过的R2006a