2010-10-04 131 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

相關問題