C# Winform控件对透明图片重叠时的解决方法

在C# Winform开发中,处理透明PNG或GIF图片时,可以通过设置外观属性实现基本透明。然而,当多个PictureBox控件重叠,期望重叠部分透视下面的控件时,标准方法无效。通过网上找到的代码`ControlTrans(pic, pic.Image)`应用到每个控件,可以实现控件重叠部分的透明效果。" 122998539,10667954,智慧楼宇:精细化管理与智能应用,"['人工智能', '物联网', '智慧消防', '智能电梯', '设备管理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用C# winform开发界面时会遇到很多小问题,比如贴透明的png图片或GIF图片后,图片无法透明,这点可以通过属性设置:外观/BackColor (Web TransParent)可以解决。

但当用多个控件时,如PictureBox,控件都贴透明图片后,两个PictureBox有重叠的地方,希望重叠的地方能透明,就是透视下面的控件部分,结果测试后发现两控件重叠透明的地方对整个框架的背景透明,但对下面控件无法透明,最后在网上找了一段代码,解决了这个问题。

解决时,对每个控件使用:ControlTrans(pic,pic.Image);然后层叠之后就可以透明了。

         private  unsafe  static GraphicsPath subGraphicsPath(Image img)
        {
             if (img ==  nullreturn  null;

             //  建立GraphicsPath, 给我们的位图路径计算使用   
            GraphicsPath g =  new GraphicsPath(FillMode.Alternate);

            Bitmap bitmap =  new Bitmap(img);

             int width = bitmap.Width;
             int height = bitmap.Height;
            BitmapData bmData = bitmap.LockBits( new Rectangle( 00, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
             byte* p = ( byte*)bmData.Scan0;
             int offset = bmData.Stride - width *  3;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值