2015-10-04 25 views
-1

我使用onPaint與timer_tick上的Invalidate()重繪,我如何繪製一個不應該與其他重繪的背景?C#使用onPaint與計時器

我試過使用pictureBoxes,但他們出現在OVER的onPaint上繪製,我也無法使用透明圖像。

+0

你能展示一些你的代碼嗎? – Cjen1

+0

爲什麼你想要背景不被着色?當系統需要重新繪製時,它將被銷燬! - 儘管如此,您可以將BackgroundImage設置爲不變背景。 - 另外:當您談論透明度時,您完全不清楚目標是什麼。請解釋清楚一點,否則我們不能真正幫助或建議..! – TaW

+0

由於onPaint每10ms刷新一次,我希望有一種方法可以只畫一次某些東西(如背景)來減少負載。 – SJ19

回答

0

對於這樣的事情,Windows窗體庫是非常糟糕的。因爲沒有任何顯示數據被緩衝,所以每次重新繪製(如果足夠慢)都是可見的並且浮華。一般而言,透明圖像無法按照您的要求進行操作。我不完全知道你最終想要完成什麼,但如果你只是在玩圖形,我會建議你使用類似Win2D API的東西。就使用而言,Win2D API與onPaint事件非常相似。

我的意思是,理論上你可以使用Regions來使事物透明,但它們不能讓事物像50%透明,但只能完全透明。幾年前,我嘗試用Windows窗體做花哨的圖形,而且我真的不建議這樣做。

+0

你可以隨時將doublebuffered設置爲true,但不知道更多任何建議似乎徒勞 – TaW

+0

@georch正如TaW所說,我將doublebuffered設置爲true,我必須說它非常流利。 Monogame可能有這個功能嗎? – SJ19