Re: [VB2005] 兩個圖層重疊

看板Visual_Basic作者 (躂躂..)時間18年前 (2007/06/14 02:13), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
※ 引述《wen1015 (我是小狗丁丁的娘)》之銘言: : 想請問一下有沒有什麼方法可以讓它真的變成透明的呢 雖然是有辦法可以設成透明~ 可是做出來的效果不是很好~ 尤其在上層的圖片(也就是你所謂的picturebox)要常常移動.. 而且有多個控制項重疊時, 圖層順序會亂掉.. 比較建議的做法是, 直接在在 Paint 事件裡把那些小圖片直接繪在 Form(或其他控制項)上面.. 如果你以前沒有直接繪圖片(不透過PictureBox)的經驗的話.. 我有個比較容易的做法.. 而且不用修改太多你現有的程式.. (修改程式之前先備份吧..) 先把 Form 上的那些 PictureBox的 Visible都設成 false (不顯示) 然後在你的 Form的Paint事件裡寫 ' 把 form 上的 picturebox iamge都圖到form上面 For i As Integer = Controls.Count - 1 To 0 Step -1 If TypeOf Controls(i) Is PictureBox Then e.Graphics.DrawImage(CType(Controls(i), PictureBox).Image, _ Controls(i).Left, Controls(i).Top) End If Next i 如果你有移動了任何一個 picturebox的位置座標, 那就呼叫 Me.Invalidate() 叫 Form把圖片都重繪一次, 還有要把 Form的 DoubleBuffered設成true, 繪圖比較不會有閃爍的情形發生~ 如果你的圖檔是bmp,那繪之前就要用Bitmap.MakeTransparent設成透明 再繪上去才不會有有色背景出現.. 大略是醬 ._./ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.176.251

06/15 00:09, , 1F
謝謝 雖然我有點看不太懂 可是我會先試試看的
06/15 00:09, 1F
文章代碼(AID): #16S3Ei5B (Visual_Basic)
文章代碼(AID): #16S3Ei5B (Visual_Basic)