2010-10-04 34 views
3

我正在尝试使用PaintListeners与SWT进行绘制和动画处理。我想影响动画的时间,所以我看起来很广泛,但找不到任何解释生成PaintEvents的方式和方式,以及如何影响该动画,例如强制执行帧率或仅将PaintEvent发送到cetrain Widgets。SWT PaintEvent来自哪里以及如何影响它

那么,这怎么办呢?而且,这应该完成吗? - 对这个话题没有任何发现表明可能有更好的办法。

回答

3

PaintEvents由SWT为您在每次需要时生成。例如,第一次显示小部件或小部件再次变为可见时,因为窗口已移动。

您可以强制漆事件使用上的控件出现:

control.redraw(); 
control.update(); 

在这里看到:http://help.eclipse.org/helios/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Control.html#redraw()

+0

谢谢,即时通讯意识到 '重绘()' 和 '更新()'方法。如果我正确地理解了API,第一个标记就是在下一个疼痛请求来临时标记处理的wiget,第二个强制所有未完成的请求被处理。它们都不影响请求的产生。所以,这并不能回答我的问题。也许你可以详细说明你的第一部分“由SWT生成”和“每次需要”。 SWT的哪个部分?如何确定需求? – kostja 2010-10-05 06:41:49

+0

@kostja我认为SWT并不是真的自己生成这些绘画事件,而是依赖于底层窗口系统(motif,gtk或Windows)。为什么重绘/更新不符合您的需求? – 2010-10-05 07:01:24

+0

我想要在不同的系统中实现一致的帧速率,所以我认为一个好主意应该是掌握PaintEvent的生成并使用timerExec()或类似的方法来控制它。也许有更好的方法来做到这一点? – kostja 2010-10-05 07:59:06

相关问题