关于图片透明问题?

蓝点天尊 2009-11-16 11:20:32
C#中,在一图片(pictureBox)下面放置一个Button控件,我想让图片透明,显示出下面的Button。而不是透明到父控件的底色。不知有何办法?
...全文
218 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqzeng-ip 2009-11-16
  • 打赏
  • 举报
回复
png图片
蓝点天尊 2009-11-16
  • 打赏
  • 举报
回复
不是这个意思,PictureBox,仍置于上层,但通过透明能看到下面的BUTTON
qqzeng-ip 2009-11-16
  • 打赏
  • 举报
回复
 pictureBox1.SendToBack();

Button.BackColor = Color.Transparent;

Button.Parent = pictureBox1;

Button.BringToFront();

蓝点天尊 2009-11-16
  • 打赏
  • 举报
回复
另外做任意形状的也搞定了,网上代码很多,朋友们自己搜一下,刚开始方向搞错了,搞了好久。
蓝点天尊 2009-11-16
  • 打赏
  • 举报
回复
还有提醒一下,如果用透明背景的图片,在C#下,不用Windows API,恐怕是做不到的,我已经试过了,这个方法看来是最可行的,对任意图片,如果只透明背景,要写个算法,生成这个区,我想这个应该能做到,因为C#都有个方法Bitmap _image = new Bitmap(@"D:\test\e.bmp");
_image.MakeTransparent(Color.White);
能处理透明区,所以,如果能把这个算法给研究出来,生成REGION,那任意图形,只背景透明就可以了。
还有,再说明一点,这种方法实际上不是“透明”,而是用不规则区域定义来实现相同的效果罢了,从感官上它就透明
蓝点天尊 2009-11-16
  • 打赏
  • 举报
回复
public partial class PnlEx : Panel
{
public PnlEx()
{
InitializeComponent();


//设置要透明的区域(这里测试我用的是一个三用形,如果是其它图形,那你得耐心点,你要是做任意图片,我建议写个组件来生成这个透明区,这个是肯定可以做到的,只是我没那个需要也就不研究了,这个方法做一般的控件足够了)
Point[] _points = new Point[4];
_points[0] = new Point(0, 0);
_points[1] = new Point(this.Width, 0);
_points[2] = new Point(0, this.Height);
_points[3] = new Point(0, 0);

byte[] _bytes = new byte[4];
_bytes[0] = (byte)System.Drawing.Drawing2D.PathPointType.Start;
_bytes[1] = (byte)System.Drawing.Drawing2D.PathPointType.Line;
_bytes[2] = (byte)System.Drawing.Drawing2D.PathPointType.Line;
_bytes[3] = (byte)System.Drawing.Drawing2D.PathPointType.Line;

System.Drawing.Drawing2D.GraphicsPath _path = new System.Drawing.Drawing2D.GraphicsPath(_points, _bytes);

//将这个区域设置成控件的绘制区
this.Region = new Region(_path);
}
}
lee_b 2009-11-16
  • 打赏
  • 举报
回复
顶啊,,LZ,把代码给来分享,我也正要把picbox设置成透明,而不是父窗体的颜色呀,,,代码。。
蓝点天尊 2009-11-16
  • 打赏
  • 举报
回复
我的邮箱:jzjsh@tom.com QQ:312912745, 不过QQ上班不能用
蓝点天尊 2009-11-16
  • 打赏
  • 举报
回复
我要满足的应用完成了,可以做到,通过做控件的REGION可以做到,我已经试出来了,我是在做一组互相叠压的TAB时需要这个功能,也就是一象VS开发环境管理工作区的那种效果,但这种方法有个局限性,就是要求图形有一定的规则,就是说,要能用一组点来表示透明区域,不过满足我的应用是可以了。谢谢大家参与
lee_b 2009-11-16
  • 打赏
  • 举报
回复
我顶,,我正在为这问题发愁中,,lZ要解决了,,给我学习学习啊。
蓝点天尊 2009-11-16
  • 打赏
  • 举报
回复
图片背景设置成透明是不行的,这个我早试了,C#有个问题,图片透明,是相对它的容器背景而言的,透明以后别说容器上的控件,就是容器的背景图片,都被透明成背景色了
desegou 2009-11-16
  • 打赏
  • 举报
回复
这个你用PS把图片背景设置成透明才行

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧