作者optimist9266 (Optimist)
看板C_Sharp
標題Re: [問題] 請問如何把元件的背景色用成透明?
時間Sat Feb 20 16:05:35 2010
※ 引述《F23ko (純潔)》之銘言:
: 1.
: 我希望在picturbox上放label或是textbox
: 但是不希望背景色遮住圖片
: 請問要如何把背景色設成透明?
: 2.
: 以及,有辦法指定picturbox中的某一顏色為透明色嗎?(不要檔到下面的元件)
: 我試過用
: 在表單用TransparencyKey的方法
: 但是這會變成整個視窗透明,我可以從程式中的「洞」看見我的桌面 orz....
: 開始動手寫個稍微複雜一點的程式之後
: 才發現自己不會的這麼多....
關於第一個問題
如果原PO有萬不得已的理由一定要用Windows Form來製作的話
以下有兩個範例可以參考看看 這是我之前爬文找到的 雖然效果不是很滿意
Alpha Blended (Transparent Capable) TextBox and RichTextBox:
http://www.codeproject.com/KB/edit/AlphaBlendedTextControls.aspx
AlphaBlendTextBox - A transparent/translucent textbox for .NET
http://www.codeproject.com/KB/edit/alphablendtextbox.aspx
如果沒有什麼特殊理由一定要用Windows Form來寫 我建議轉戰WPF
MSDN Windows Presentation Foundation:
http://msdn.microsoft.com/zh-tw/library/ms754130.aspx
WPF的元件全部都是使用DirectX 3D繪圖引擎來畫的
WinForm則是使用貧弱的GDI+ 兩者具有根本的差異
關於第二個問題
建議你參考Bitmap.MakeTransparent方法
http://ppt.cc/X!CK
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.86.18.21
1F:推 F23ko:感謝 m(_ _)m 02/20 16:56
2F:推 F23ko:wpf上的元件沒有Location這個欄位說,那請問要怎麼移動位置? 02/21 16:06
3F:推 F23ko:MARGIN不給調 orz.... 02/21 16:22
4F:推 F23ko:wpf的觀念好像是把程式撰寫跟表單設計分開.... 我在程式中找 02/21 16:42
5F:→ F23ko:不到移動元件、調整zorder之類的辦法 orz.... 02/21 16:43
6F:→ optimist9266:WPF在一般狀態下是使用相量的方式來計算位置 02/21 17:25
7F:→ optimist9266:請試著熟悉 HorizontalAlignment屬性和 02/21 18:18
8F:→ optimist9266:VerticalContentAlignment的設定與Margin的關係 02/21 18:18
9F:→ optimist9266:如果想使用絕對值來定位 可以使用Canvas控制項 02/21 18:19
※ 編輯: optimist9266 來自: 58.86.18.21 (02/21 18:23)
10F:推 F23ko:在程式進行中時 label1.Margin.Left += 10; 不給過.... 囧" 02/21 18:36
11F:→ F23ko:目前c#只看過兩本 一本一直用主控台在教,另一本用form 02/21 18:38
12F:→ F23ko:兩本在後面都有提一點點WPF,不過我都沒看到他們移動表單上 02/21 18:38
13F:推 F23ko:的元件.... 或者說,我到現在都沒有系統的學過xaml.... 02/21 18:40
14F:→ F23ko:似乎還得多買本書來讀.... = =||| 02/21 18:42
15F:推 F23ko:還有,wpf時,屬性下方不會出現說明說.... from才會 02/21 18:49
WPF其實初步應用不需要學XAML,因為XAML不過就是告知IDE該如何編譯主介面而已,
其實在很多狀況下你是不需要直接碰觸XAML的,屬性的說明方面,MSDN或是Visual C#的
Code頁Ctrl+J就有簡單的說明了,必要時可以搭配Yahoo or Google字典服用。
Margin所紀錄的,是相對於VerticalContentAlignment屬性還有HorizontalAlignment屬
性所設定的距離,我不是很建議你直接修改他,如果是要使用絕對位置設定的話,上面
回文已經說過,可以使用Canvas控制項,如果想修改控制項的Top跟Left屬性,請你參考
MSDN。
Canvas.SetLeft:
http://ppt.cc/hzWH
Canvas.SetTop:
http://ppt.cc/IVYf
以上兩個靜態方法可以修改指定控制項的Canvas.Top和Canvas.Left屬性。
其實粗淺的使用WPF並不困難,我也只靠著MSDN來學習WPF,目前也能製作出一定水準的介
面,且MSDN有想當多WPF的動畫、繪圖範例,建議你可以去下載來參考看看。
※ 編輯: optimist9266 來自: 58.86.18.21 (02/21 19:43)
16F:推 F23ko:原來是這樣啊.... 了解 感謝 m(_ _)m 02/21 19:49