SiteMap

2013年7月15日月曜日

C# - 設定半透明的顏色

目標,PictureBox上面擺 Label, 當滑鼠移動到 Label的區域的時候,Label的背景會變色,而且變色後可以看到後面的 picture

PictureText
首先,拉一個 PictureBox跟三個 Label, PictureBox的圖片伸縮模式設定為 Zoom, 底色設定為 FF8C00 ex:" ",因為圖片設定為 Zoom的關係,PictureBox的上下會留下空白,而且因為有設定 backcolor的關係,空白會呈現 FF8C00的顏色
加入3個Label,Label的底色會遮住Picture的圖片

目標,滑鼠移動到 label1 區域內時,背景顏色換為透明色

為 label1 掛上 Enter事件, 程式碼如下

private void OPacityActive_MouseEnter
(object sender, EventArgs e)
    {
       Label l_lbl = sender as Label;
       l_lbl.BackColor =
               Color.FromArgb
                      (80, 255, 10, 105);
    }

Mouse_Leave
l_lbl.BackColor =
      System.Drawing.Color.Empty;

重點在 Color.FromArgb(Alpha,R,G,B)
 這行程式碼上面, Alpha是透明度,RGB是顏色色碼。

不過效果怎麼怪怪的, label1 底色是變了,不過沒有半透明的效果出來 

改變 Form1的底色看看

厄,改變Form1顏色的結果,3個Label的顏色都變了,這說明了甚麼,難道 Label
一開始背景色就是透明色!!!!而且直接透明到 Form1去了,馬上檢查 InitializeComponent()

果然沒錯,3個Label都加在 Form1裡面

改變 在事件裡面傳入 Label的 parent
增加了這行

l_lbl.Parent = pictureBox1;

指定parent為 pictureBox1
半透明成功,不過還有座標會改變的問題
在 InitialComponent()裡面更改 Label的 Controls.Add 的相關設定
完成






相關閱讀
C# - 設定透明色

0 件のコメント: