主要内容

drawnow

更新图和流程回调

描述

例子

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

例子

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

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

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

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

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

例子

全部折叠

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

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

创建一个动画的直线增长,因为它积累10000点。因为有10000个点,在屏幕上绘制每次更新都很慢。通过限制使用的更新次数来创建更快、平滑的动画drawnow limitrate.然后,通过调用在屏幕上显示最后的更新drawnow循环结束后。

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

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

更多关于

全部折叠

相当于drawnow

这些操作等同于调用一个fulldrawnow命令:

提示

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

版本历史

R2006a之前介绍过

Baidu
map