2010-11-09 49 views
1

我目前正在通過組合Windows窗體和XNA構建的XNA的級別編輯器。 我使用App Hub上的示例link text,但我做了一些更改,所以我有一些ViewportController類管理所有視口控件,而不是直接管理它們。 問題是,當我需要更新Draw方法時,我必須搖動窗口。 任何人都知道如何解決這個問題,所以Draw會實時更新?Windows窗體和XNA - 繪製不是實時的

回答

2

不知道ViewportController可能是什麼。但是,Draw()方法是由Windows繪畫請求觸發的。運行Control.OnPaint()方法時,GraphicsDeviceControl類中會覆蓋它,導致Draw()運行。

樣品SpinningTriangleControl顯示你怎麼拿到的一個控件反覆重繪自己,你需要得到什麼動畫:

 // Hook the idle event to constantly redraw our animation. 
     Application.Idle += delegate { Invalidate(); }; 

注Control.Invalidate()方法調用,這最終是什麼導致OnPaint()方法運行。使用空閒事件可以確保一遍又一遍地完成,但只有當主線程不忙於其他任何事情時纔會這樣做。對於僅顯示靜態內容的控件而言,這不是必需的,例如SpriteFontControl示例。另一種方法是使用帶有較短Interval的Timer,其Tick事件處理程序可以調用Invalidate()。

+0

謝謝!我想我錯過了那部分:-) – Basic 2010-11-11 00:02:37