2010-07-30 84 views
0

我製作了一個由pictureboxes構建的紙牌遊戲。一張卡片可以放入的空白位置是一個帶有透明背景和3d邊框的空白圖片框。然後我有一個當前的卡,這也是一個由MouseMove事件移動的圖片框。用鼠標移動時透明圖片盒閃爍

只要我將卡片拖過透明的圖片框,卡片上就會出現一張卡片,直到我停止鼠標並讓圖片刷新。當我將當前卡片的背景設置爲透明時,雖然卡片被設置爲圖像(如果將背景設置爲綠色,則它並不重要,因爲它會消失,這也是這種情況)。

有沒有解決方法?我試過DoubleBuffered但沒有成功。謝謝!

回答

1

從描述中不清楚你的代碼是什麼樣的。但是,在修復此問題後,請注意您的下一個問題:控件的透明度效果在控件重疊時無法在Windows窗體中使用。你會看到父母的背景,你不會看到你的移動卡重疊的圖片框的內容。

這不是WPF的問題,它有一個非常不同的呈現模型。但只要你想堅持使用Windows窗體,就需要使用窗體的OnPaint()事件來完成這個工作。繪製卡表,然後繪製庫存,然後繪製移動卡。當卡片移動時,調用Invalidate()來強制表格重新繪製,現在將卡片顯示在新的位置。

換句話說,不要解決你目前的問題。重新設計你的程序。

+0

謝謝,這聽起來像一個好主意。問題是我吮吸WPF,不知道如何使可拖動圖像等東西。 – 2010-07-30 19:39:52

+0

你也可以使它在winforms中工作,而不是與圖片框。 – 2010-07-30 19:44:44

0

你可以叫

Application.DoEvents(); 

pictureBox.Move事件;所以所有的背景圖片都會重新繪製。

+0

謝謝,做得更好,但不好。仍然閃爍,當我釋放鼠標圖片有時凍結 – 2010-07-30 19:40:17