CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

求教:不规则窗体中的为什么会变透明?

楼主NightShadows()2006-09-25 12:54:17 在 .NET技术 / C# 提问

我想做一个圆角矩形的窗体,用BMP画了个背景,四个角用青色填充,在OnLoad里加入如下代码:  
  Bitmap   bm   =   this.BackgroundImage   as   Bitmap;  
  bm.MakeTransparent(bm.GetPixel(0,0));  
  this.TransparencyKey   =   bm.GetPixel(0,0);  
  实现了四个角的透明,可窗体上label,button等控件上的文字也变成透明的了(如果是有背景的button则正常),是我用的方法不对吗?应该如何更改?  
  先谢过大家了! 问题点数:30、回复次数:25Top

1 楼Knight94(愚翁)回复于 2006-09-25 13:01:04 得分 0

to   可窗体上label,button等控件上的文字也变成透明的了(如果是有背景的button则正常),是我用的方法不对吗?应该如何更改?  
   
  修改label和button上的背景颜色,不要和TransparencyKey   的颜色一样即可。Top

2 楼kissknife(侧身向南边)回复于 2006-09-25 13:03:11 得分 0

Knight94(愚翁)正解.....  
   
  Top

3 楼viena(维也纳N02)回复于 2006-09-25 13:05:30 得分 0

Knight94(愚翁)正解.....Top

4 楼NightShadows()回复于 2006-09-25 13:06:33 得分 0

to   修改label和button上的背景颜色,不要和TransparencyKey   的颜色一样即可。  
   
  我的字体设的是黑色,label的背景色是Transparent,我把label的背景设成其他颜色还是一样的结果,文字是透明的  
  Top

5 楼NightShadows()回复于 2006-09-25 13:07:54 得分 0

难道要给每个label设置image不成?Top

6 楼Knight94(愚翁)回复于 2006-09-25 13:10:49 得分 0

to   我的字体设的是黑色,label的背景色是Transparent,我把label的背景设成其他颜色还是一样的结果,文字是透明的  
   
  修改修改label和button上的forecolorTop

7 楼Knight94(愚翁)回复于 2006-09-25 13:11:38 得分 25

你的现象可能是穿透色为黑色,所以把label和button上的forecolor不要设置为黑色。Top

8 楼NightShadows()回复于 2006-09-25 13:17:32 得分 0

to   Knight94(愚翁)    
  你说的对,字体设成其他色就可以了,可为什么我的穿透色会变成黑色呢?我的图片的四个角都是青色的,我设的是图片(0,0)位置的颜色为透明色,我在FORM属性里选的也是透明色也是青色,而且从运行结果看我的图片四角也变透明了,  
  为什么也变成透明色了?Top

9 楼NightShadows()回复于 2006-09-25 13:19:22 得分 0

为什么黑色也变成透明色了?  
  Top

10 楼Knight94(愚翁)回复于 2006-09-25 13:20:07 得分 0

你最好看看TransparencyKey的值是什么Top

11 楼viena(维也纳N02)回复于 2006-09-25 13:38:44 得分 5

(0,0)点就是黑色吧Top

12 楼NightShadows()回复于 2006-09-25 13:43:48 得分 0

执行  
  bm.MakeTransparent(bm.GetPixel(0,0));  
  后,图像四角变成了黑色,给TransparencyKey赋值就成了黑色,所以黑色就变透明了。  
   
  MakeTransparent不是使指定颜色对此bitmap透明吗?怎么会把那个颜色变成黑色呢?不用这条语句图片四角又不会透明,有什么办法可以解决吗?  
   
  多谢了Top

13 楼NightShadows()回复于 2006-09-25 13:58:21 得分 0

请大家指教Top

14 楼NightShadows()回复于 2006-09-25 14:01:52 得分 0

没有办法吗?Top

15 楼Knight94(愚翁)回复于 2006-09-25 14:04:13 得分 0

change    
  Bitmap   bm   =   this.BackgroundImage   as   Bitmap;  
  bm.MakeTransparent(bm.GetPixel(0,0));  
  this.TransparencyKey   =   bm.GetPixel(0,0);  
   
  with  
  Bitmap   bm   =   this.BackgroundImage   as   Bitmap;  
  this.TransparencyKey   =   bm.GetPixel(0,0);Top

16 楼NightShadows()回复于 2006-09-25 14:11:15 得分 0

to   Knight94(愚翁)  
  可是我如果不写bm.MakeTransparent(bm.GetPixel(0,0));运行时会显示青色的四个色,不会变成透明  
   
  多谢你耐心的回答,即使最终不能解决我也要把分加给你,多谢了。Top

17 楼NightShadows()回复于 2006-09-25 14:13:23 得分 0

顶一下Top

18 楼NightShadows()回复于 2006-09-25 14:17:24 得分 0

顶Top

19 楼Knight94(愚翁)回复于 2006-09-25 14:20:34 得分 0

to   可是我如果不写bm.MakeTransparent(bm.GetPixel(0,0));运行时会显示青色的四个色,不会变成  
  透明  
   
  为什么一定需要这一句  
  bm.MakeTransparent(bm.GetPixel(0,0));  
   
  transparentkey不是已经设定了穿透颜色,它会进行过滤的。Top

20 楼NightShadows()回复于 2006-09-25 14:35:59 得分 0

是啊,可是transparentkey有个BUG,在非24位模式下会不正常  
  我是按http://www.microsoft.com/china/MSDN/library/netFramework/netframework/WindowsForms.mspx?mfr=true  
  这篇文章写的程序,结果就是上面那样,黑色变成了透明色Top

21 楼NightShadows()回复于 2006-09-25 14:47:02 得分 0

看起来只能用这个方法了:  
  http://allancandy.cnblogs.com/archive/2005/09/01/227814.html  
   
  多谢各位,告别是Knight94(愚翁)   ,多谢了。Top

22 楼Knight94(愚翁)回复于 2006-09-25 14:51:27 得分 0

那你可以如下试试:  
  Bitmap   bm   =   this.BackgroundImage   as   Bitmap;  
  bm.MakeTransparent(bm.GetPixel(0,0));  
   
  Bitmap   bitNew   =   new   Bitmap(   bm.Width,   bm.Height   );  
  Graphics   g   =   Graphics.FromImage(   bitNew   );  
  g.FillRectangle(   Brushes.White/*   Set   transparent   color   here*/,   0,   0,   bm.Width,   bm.Height   );  
  g.DrawImage(   bitNew,   0,   0   );//Redraw   image   in   specific   back   color  
  g.Dispose();  
   
  this.TransparencyKey   =   Color.White;//Set   transparent   keyTop

23 楼test33(隐姓埋名)回复于 2006-09-25 19:47:04 得分 0

顶了哇`Top

24 楼lih163(做自己喜欢的事)回复于 2006-09-27 14:31:34 得分 0

学习Top

25 楼babyQ(restarting)回复于 2006-09-28 08:48:01 得分 0

愚翁   的要顶,Top

相关问题

关键词

得分解答快速导航

  • 帖主:NightShadows
  • Knight94
  • viena

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo