作者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