2013-08-07 74 views
1

我有一個正方形排列的圖片框。我想把一個更大的,大多數透明的圖片框放在頂部。但是當我這樣做時,它覆蓋了其他圖片框,並只繪製了表單的背景。
有沒有辦法讓所有其他圖片框顯示它的透明位置?多個圖片框的透明度

回答

3

WinForms中的透明度並不好。一些控件具有透明度支持,其他則不支持。一些控件可以被子類化以啓用此功能(通過和SupportsTransparency標誌)。我相信這可以通過PictureBox完成。

但是,所有WinForms控件的透明度通過讓透明控件調用其父控件在子控件繪製之前繪製背景來實現。這意味着你不能有兩個兄弟控件,並期望透明度可以讓其他人看到。抱歉!

所有這一切,都可以編碼你自己的解決方法來支持這一點。這涉及到子類化PictureBoxOnPaint重寫中的巧妙編碼以找到兄弟控件並手動觸發將它們繪製到內存位圖中。這種方法很多陷阱。

試試WPF!

+0

關於繼承'PictureBox'子類時的問題,這本質上是一個難題嗎?或者提問者的兄弟形式要求複雜的部分? – kdbanman

+1

我在幾年前做過類似的事情,但我不記得所有的細節。我記得必須瞭解所有控件的轉換和縮放以及相對位置,以便正確剪裁輸出。這絕對是可行的,而且是一個有趣的挑戰! –

0

這裏有一個技巧,以獲得期望的結果:

  1. 創建頂部圖像的多個副本。
  2. 將每個副本添加到應涵蓋的每個圖片框的控件中。
  3. 根據要覆蓋的每個圖片框的偏移來調整每個副本的位置。

所以你會看到你的大圖像的每一個副本覆蓋每個圖片框,就好像他們是一個單一的圖像。