首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

C# Winform 干半透明窗体

2012-12-14 
C# Winform 做半透明窗体.类似vista主题效果 标题栏是透明的。和边框也是透明的。我试了一下Opacity 属性。设

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;


   f.Show();
  }
  
  void MainFormMove(object sender, EventArgs e)
  {
   f.Location = this.Location;
  }


  
[其他解释]
引用:
C# code//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;
   f.Show();
  }void MainFormMove(object sender, EventArgs e)
  {
   f.Location=this.Location;
  }
?

给来个图把。 就是实现这效果。你看了就知道了。 呵呵。如果要用多个窗体做的话。我还用问么。

我想要的就是API或者GDI+的 高级一点的。 使之能在一个窗体上。



你看边栏的背景图片。和 时钟,日历的阴影效果。用你的代码貌似不行。。会有白边。。


[其他解释]
up
[其他解释]
完美实现Alpha半透明窗体的C#源码
[其他解释]
Window Hiding with C#
A Window Hider program that demonstrates many C# features


[其他解释]

[其他解释]
来人绑定起来啊. 谢谢啊./
[其他解释]
引用:
Window Hiding with C#
A Window Hider program that demonstrates many C# features

看图片好象也是全局透明的. 

[其他解释]
引用:
Per Pixel Alpha Blend in C#


Demonstrates how to create per pixel alpha blending windows







使用很简单,我刚试过,稍加改动即可作出相当PL的窗体效果,与QQ的透明窗体效果一样,原理也一样!

下面是一段

Introduction

This is a port of my other article from C++/MFC to C#/Windows Forms. The concept of creating a per-pixel-alpha blending window remains the same, the GDI functionUpdateLayeredWindow.
What changed

? ? * Image loading is handled by GDI+ classes (System.Drawing namespace).
? ? * No need to pre-multiply the rgb channels with the alpha channel.
? ? * No more support for PSP files. PNG file are the best choice.


好久没学C# 
去看了看 
好像是基于GDI+的 
感觉不是很好···而且是要一个32位包含alpha通道的图片(PNG吧?) 


用来画一个按钮好像又有点别扭··· 
如果可以直接设置按钮属性就比较好 
不知道SendMessage可以实现按钮的透明度调节吗? 
在VC下经常可以用这个东西来调节一些属性,而且SetWindowLong也不错······ 
但是不知道C#有这两个吗,没有就要引入dll了
[其他解释]
Per Pixel Alpha Blend in C#


Demonstrates how to create per pixel alpha blending windows







使用很简单,我刚试过,稍加改动即可作出相当PL的窗体效果,与QQ的透明窗体效果一样,原理也一样!

下面是一段

Introduction

This is a port of my other article from C++/MFC to C#/Windows Forms. The concept of creating a per-pixel-alpha blending window remains the same, the GDI function UpdateLayeredWindow.
What changed

    * Image loading is handled by GDI+ classes (System.Drawing namespace).
    * No need to pre-multiply the rgb channels with the alpha channel.
    * No more support for PSP files. PNG file are the best choice. 

[其他解释]
自己在顶。

[其他解释]

引用:
窗体全有PNG背景文件承载,PNG边缘做成透明的,这个窗体的边缘即透明,这种方法最为方便有效!

喜欢全部用代码实现的话,完全可以,比较麻烦!


方便给段代码么。。

[其他解释]
你这样试试看行不行,
1、创建一个窗体,在窗体中开始不加任何内容,将窗体设置成半透明的
2、创建一个用户控件,在用户控件中写你所有的正文内容
3、在前面的窗体加载事件中,将你的用户控件加载到你的窗体中


[其他解释]
自己在顶。

[其他解释]
帮你顶一下
[其他解释]
引用:
你这样试试看行不行,
1、创建一个窗体,在窗体中开始不加任何内容,将窗体设置成半透明的
2、创建一个用户控件,在用户控件中写你所有的正文内容
3、在前面的窗体加载事件中,将你的用户控件加载到你的窗体中

用户控件,就是窗体上的控件。
实现不了。 呵呵。 这方法我没看到什么区别么 - - !
[其他解释]
谢谢帮顶。
[其他解释]
过来学习,和你一样等待高手……
[其他解释]
引用:
引用:
 窗体全有PNG背景文件承载,PNG边缘做成透明的,这个窗体的边缘即透明,这种方法最为方便有效!

 喜欢全部用代码实现的话,完全可以,比较麻烦!


 方便给段代码么。。



19楼链接里下载代码
[其他解释]
自己在顶
[其他解释]
我找了几个全市用的API实现的,晕,不用api不能实现么?
[其他解释]
gdi
[其他解释]
ding ...!!!!!
[其他解释]
up
[其他解释]
路过学习
[其他解释]
推荐CodeProject上那个源码


[其他解释]
顶,关注
[其他解释]
不会帮顶!
[其他解释]
友情帮顶
[其他解释]
可以用CustomForm来实现窗体半透明,用CustomForm的好处就在于form窗体是透明的,其上的控件比如listbox、picturebox是实体的显示。刚好满足楼主的要求。

用的时候主要引用下CustomForm.Dll文件就可以定义CustomForm窗体了
[其他解释]

引用:
推荐CodeProject上那个源码


那个是全局透明的. 上面的控件依然是和父容器的透明值一样..
[其他解释]
我也顶
[其他解释]
http://blog.csdn.net/wo65432519/archive/2010/01/01/5118212.aspx

这个是WinCE的透明控件的做法,LZ可以参考下
[其他解释]
顶了~~~~~~~~~~~~
[其他解释]
http://community.csdn.net/
这里有我上传的CustomForm.dll文件,你一用就明白了,希望对你有帮助。
[其他解释]
老贴又被翻出来了~
[其他解释]
   帮    顶   
[其他解释]
路过....
[其他解释]
帮顶!!!
这个真挺好
[其他解释]
http://www.cnblogs.com/liutao409/archive/2010/11/01/1866104.html
你要的。。。
也是我要的。
[其他解释]
顶起来!
我也一直 在找 解决 这种部分半透明 部分不透 的窗体 效果 的方法  。
winform  不好实现这种效果啊
WPF 就简单了。
[其他解释]
引用:
老贴又被翻出来了~


问题没有得到根本的解决,再说,你有啥资格说是老帖子?曾经发表过言论或者给过解决方案么。~
[其他解释]
该回复于2011-04-02 17:22:46被版主删除
[其他解释]
看来问题的确比较难哦,无人有正确答案
[其他解释]
解决了吗?木有解决加我QQ1845423835
[其他解释]
蛋痛,到现在都没解决问题啊、、、、

我也非常想知道。。。。。

用窗体叠加可以是可以但是感觉是在骗人一样。。。。

热点排行