当前位置: 代码迷 >> .NET Framework >> C# Winform 干半透明窗体
  详细解决方案

C# Winform 干半透明窗体

热度:83   发布时间:2016-05-02 00:07:50.0
C# Winform 做半透明窗体.
类似vista主题效果 标题栏是透明的。和边框也是透明的。

我试了一下Opacity 属性。设置成 50% 。之后发现 确实是半透明了。

但是我发现窗体中的内容也是透明的了(包含在窗体上所有的控件)。

琢磨了一阵子,我又试了下TransparencyKey 这个属性。我弄了张半透明的图片。

然后把TransparencyKey 指定了对应的颜色。 运行起来。 半透明的图片又变成了不透明的了。

请问高手,如果用C#实现半透明(内容不透明)应该如何做呢?谁做过。
------最佳解决方案--------------------
友情帮顶
------其他解决方案--------------------
顶一下
------其他解决方案--------------------
窗体全有PNG背景文件承载,PNG边缘做成透明的,这个窗体的边缘即透明,这种方法最为方便有效!

喜欢全部用代码实现的话,完全可以,比较麻烦!
------其他解决方案--------------------
引用:
 好像是基于GDI+的


你连看都麽看就下这结论,这句话我还特意用红色标了下,不用拉倒!

“The concept of creating a per-pixel-alpha blending window remains the same, the GDI function UpdateLayeredWindow. ”
------其他解决方案--------------------
http://d.download.csdn.net/down/1951167/pipi04132417
 
这里有我上传的CustomForm.dll文件,你一用就明白了,希望对你有帮助。

上个贴连接地址发错了
------其他解决方案--------------------
你吧 内容 与 边框分开啊 ! 2个样式!       不可以吗?
------其他解决方案--------------------
引用:
你吧 内容 与 边框分开啊 ! 2个样式!? ? ? 不可以吗?

怎么分开 ? 我就是在Winform上放了个面板。面板背景图片是一张半透明的图片。

我指定TransparencyKey不好用。用Opaticy更不好用。

内容和窗体能分开 ? 头一次听说。
------其他解决方案--------------------
没人进。。自己顶起。
------其他解决方案--------------------
怎么回事,这么大个论坛,连解决这个问题的人都没有,

怎么嫌弃分数少么,可以追加。急。。。
------其他解决方案--------------------
帮顶一下,顺便说一下,如果没有画面美化功底用用C1的C1RibbonForm效果还是不错的~~
------其他解决方案--------------------
引用:
帮顶一下,顺便说一下,如果没有画面美化功底用用C1的C1RibbonForm效果还是不错的~~


地址给我下 , 可以么。 我就想实现个简单的效果。不太想用 3rd空件。
------其他解决方案--------------------
好贴,留名关注。
------其他解决方案--------------------
up
------其他解决方案--------------------

//opacity属性会让窗体上所有的控件都变成透明的,所以我们可以这样办。
//代码如下:
  Form f = new Form(); //创建一个新窗体
  Label lab = new Label(); //要显示的文本
  void MainFormLoad(object sender, EventArgs e)
  {   
   f.FormBorderStyle = FormBorderStyle.None; //设置窗体无边框
   f.ShowInTaskbar = false;
   f.BackColor = Color.Red;f.TransparencyKey = f.BackColor; //让窗体透明   
   lab.Text = "我是在透明窗体上的不透明文本!";
   lab.BackColor = Color.Transparent; //背景色透明
   lab.Location = new Point(100,150); //调整在窗体上的位置
   f.Controls.Add(lab);
   f.TopLevel = true;
  相关解决方案