WinForm窗体透明问题 最近制作了一个窗体设置了背景色为红色在窗体的TransparencyKey 属性中设置了红色 窗体就透明了因为窗体透明了如果窗体上有GIF或者PNG图片的时候 照片在桌面显示会出现白色锯齿 不知道怎么才没这些锯齿呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同意楼上的观点,我也遇到过这样的问题,你把PNG的边缘去除干净就可以了 楼上说的没错,要处理图片的话用Photoshop最好,WIN自带的擦不出透明效果 不可能是图片问题 首先我的软件是收录本地软件的工具 图片都是本地软件自己的图片 就好像电脑桌面的那些图片 无论是PNG 还是ICO Gif 都会有这样的锯齿 只要Winform背景不设置为透明 完全不会出现锯齿情况 只是透明的时候会出现 还没人会吗?图片是本地软件图标 通过Icon.ExtractAssociatedIcon(“软件路径”).ToBitmap()获取到Bitmap到PictureBox的 试试:PictureBox外面套一个Panel,然后将Panel设置一个默认底色 窗体设置了TransparencyKey 和背景颜色一致 透明窗体 软件要求是 透明窗体 图片图标要好像电脑的桌面那样 不能有底色 如果Panel设置默认底色的话是没有锯齿白点的 只有透明才会出现 有没有办法可以让PictureBox的底层是桌面呢 可以用gdi+做,不过推荐使用wpf 选择一个不太可能出现的颜色为透明色,如ARGB(255,255,0,255) 洋红 如果使用13楼的方法 那个白色锯齿就变成洋红色锯齿了 还是没什么区别 不过还是感谢13楼以及各位大家可以使用Icon.ExtractAssociatedIcon(“软件路径”).ToBitmap()这个代码来测试下设置下窗体的TransparencyKey属性和窗体背景颜色一致 如果真不行只能使用GDI+了 但是GDI+会经常刷新 因为拖动窗体移动的时候 图片要重绘 e.Cancel = true; if (this.Opacity > 0) { timer1.Start(); } else { e.Cancel = false; }上述代码可控制窗体的透明度 谢谢楼上的 不过我要的不是窗体整个透明 窗体透明只需要设置一个属性就可以了 我要的是窗体透明 但是 窗体上面的控件不透明 我已经使用了窗体重叠 做出来了 只不过是一些直接调用软件ICO的图片会有锯齿 但是如果设置背景颜色就不会有锯齿 估计是这些控件的父级是 透明的Form窗体而不是 桌面作为底层背景 所以才会出现锯齿白点 有没有办法解决这问题呢 GDI+本身就带有损模糊,未必不会出现噪边,建议你在PS中打开图片,放大视图,将透明色处的每个色点用铅笔工具点一遍,保证同一色,保存时图像=>模式=>索引,再保存为BMP 17楼的 首先谢谢你的回答 不过呢 我上面也说了我是直接通过 代码调用本地软件的ICO图标 绝对不会是我图片问题 如果是图片问题 那么电脑桌面软件怎么会没有锯齿呢 桌面图标是支持PNG透明的,支持32位ALPHA通道,这跟层窗体概念类似,由于你是直接加载ICO图片,边缘有模糊,所以有近似色存在,想要解决也可以,自己使用paint或者gdi+绘制到目标区域,这样就可以兼容aplha通道了. 可以搜索一些GDI+ DrawImage的资料. 或参考一些WIN7透明窗体上绘制图片的资料,该类资料与你的需求类似,既能完成窗体透明,又能保证无噪边. 我也遇到这个问题了……毛边真不好办啊……难道Winform只能这么悲催了吗 有个题,大家作一下试试看,看能作不能作 散分100,据说这样的二次开发从事两年可以成仙 C#中如何实现单链表的增、删、改和查啊? 如何在datalist的EditItemTemplate里使用linkbutton 如何更改命名空间的名称? 如何用C#做IE插件管理的软件 重酬求助——软件制做! 想做一个B2B的网站,但是图片的数据量很大,请问用哪种方式处理比较好 C#上换行符怎么不好用? 100分求教如何用GDI+在Windows CE.Net的 Form上实现简单的持续流动的动画效果。 委托 事件 监听 .net C#如何获取JS生成的COOKIE
大家可以使用Icon.ExtractAssociatedIcon(“软件路径”).ToBitmap()这个代码来测试下设置下窗体的TransparencyKey属性和窗体背景颜色一致
如果真不行只能使用GDI+了 但是GDI+会经常刷新 因为拖动窗体移动的时候 图片要重绘
if (this.Opacity > 0)
{
timer1.Start();
}
else
{
e.Cancel = false;
}上述代码可控制窗体的透明度
17楼的 首先谢谢你的回答 不过呢 我上面也说了我是直接通过 代码调用本地软件的ICO图标 绝对不会是我图片问题 如果是图片问题 那么电脑桌面软件怎么会没有锯齿呢
桌面图标是支持PNG透明的,支持32位ALPHA通道,这跟层窗体概念类似,由于你是直接加载ICO图片,边缘有模糊,所以有近似色存在,想要解决也可以,自己使用paint或者gdi+绘制到目标区域,这样就可以兼容aplha通道了.