最近制作了一个窗体设置了背景色为红色在窗体的TransparencyKey 属性中设置了红色 窗体就透明了
因为窗体透明了如果窗体上有GIF或者PNG图片的时候 照片在桌面显示会出现白色锯齿  不知道怎么才没这些锯齿呢?

解决方案 »

  1.   

    同意楼上的观点,我也遇到过这样的问题,你把PNG的边缘去除干净就可以了
      

  2.   

    楼上说的没错,要处理图片的话用Photoshop最好,WIN自带的擦不出透明效果
      

  3.   

    不可能是图片问题 首先我的软件是收录本地软件的工具  图片都是本地软件自己的图片 就好像电脑桌面的那些图片  无论是PNG 还是ICO  Gif 都会有这样的锯齿 只要Winform背景不设置为透明 完全不会出现锯齿情况  只是透明的时候会出现
      

  4.   

    还没人会吗?图片是本地软件图标 通过Icon.ExtractAssociatedIcon(“软件路径”).ToBitmap()获取到Bitmap到PictureBox的
      

  5.   

    试试:PictureBox外面套一个Panel,然后将Panel设置一个默认底色
      

  6.   

    窗体设置了TransparencyKey 和背景颜色一致 透明窗体 软件要求是 透明窗体 图片图标要好像电脑的桌面那样 不能有底色  如果Panel设置默认底色的话是没有锯齿白点的  只有透明才会出现  有没有办法可以让PictureBox的底层是桌面呢
      

  7.   

    可以用gdi+做,不过推荐使用wpf
      

  8.   

    选择一个不太可能出现的颜色为透明色,如ARGB(255,255,0,255) 洋红
      

  9.   

    如果使用13楼的方法 那个白色锯齿就变成洋红色锯齿了 还是没什么区别  不过还是感谢13楼以及各位
    大家可以使用Icon.ExtractAssociatedIcon(“软件路径”).ToBitmap()这个代码来测试下设置下窗体的TransparencyKey属性和窗体背景颜色一致 
    如果真不行只能使用GDI+了 但是GDI+会经常刷新 因为拖动窗体移动的时候 图片要重绘
      

  10.   

      e.Cancel = true;
                if (this.Opacity > 0)
                {
                    timer1.Start();
               }
                else
                {
                    e.Cancel = false;
       
             }上述代码可控制窗体的透明度
      

  11.   

    谢谢楼上的 不过我要的不是窗体整个透明 窗体透明只需要设置一个属性就可以了  我要的是窗体透明 但是 窗体上面的控件不透明  我已经使用了窗体重叠 做出来了 只不过是一些直接调用软件ICO的图片会有锯齿  但是如果设置背景颜色就不会有锯齿 估计是这些控件的父级是 透明的Form窗体而不是 桌面作为底层背景 所以才会出现锯齿白点 有没有办法解决这问题呢  
      

  12.   

    GDI+本身就带有损模糊,未必不会出现噪边,建议你在PS中打开图片,放大视图,将透明色处的每个色点用铅笔工具点一遍,保证同一色,保存时图像=>模式=>索引,再保存为BMP
      

  13.   


    17楼的 首先谢谢你的回答 不过呢 我上面也说了我是直接通过 代码调用本地软件的ICO图标  绝对不会是我图片问题 如果是图片问题 那么电脑桌面软件怎么会没有锯齿呢
      

  14.   


    桌面图标是支持PNG透明的,支持32位ALPHA通道,这跟层窗体概念类似,由于你是直接加载ICO图片,边缘有模糊,所以有近似色存在,想要解决也可以,自己使用paint或者gdi+绘制到目标区域,这样就可以兼容aplha通道了.
      

  15.   

    可以搜索一些GDI+ DrawImage的资料.
      

  16.   

    或参考一些WIN7透明窗体上绘制图片的资料,该类资料与你的需求类似,既能完成窗体透明,又能保证无噪边.
      

  17.   

    我也遇到这个问题了……毛边真不好办啊……难道Winform只能这么悲催了吗