WinForm窗体透明问题

QIAN448043229 2011-03-31 04:29:52
最近制作了一个窗体设置了背景色为红色在窗体的TransparencyKey 属性中设置了红色 窗体就透明了
因为窗体透明了如果窗体上有GIF或者PNG图片的时候 照片在桌面显示会出现白色锯齿 不知道怎么才没这些锯齿呢?
...全文
1021 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
dianjixue1 2013-03-13
  • 打赏
  • 举报
回复
使用PS处理图片,要求透明处选择后采用"填充"颜色。
颜氓 2013-01-25
  • 打赏
  • 举报
回复
我也遇到这个问题了……毛边真不好办啊……难道Winform只能这么悲催了吗
lovelove_hui 2012-03-30
  • 打赏
  • 举报
回复
遇到了同意的问题, 顶起来,求解决方案!
QIAN448043229 2011-04-04
  • 打赏
  • 举报
回复
19楼的 能给一点相关资料吗 或者例子 谢谢
dylike 2011-04-04
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 qian448043229 的回复:]
引用 17 楼 dylike 的回复:
GDI+本身就带有损模糊,未必不会出现噪边,建议你在PS中打开图片,放大视图,将透明色处的每个色点用铅笔工具点一遍,保证同一色,保存时图像=>模式=>索引,再保存为BMP


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

桌面图标是支持PNG透明的,支持32位ALPHA通道,这跟层窗体概念类似,由于你是直接加载ICO图片,边缘有模糊,所以有近似色存在,想要解决也可以,自己使用paint或者gdi+绘制到目标区域,这样就可以兼容aplha通道了.
QIAN448043229 2011-04-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 dylike 的回复:]
GDI+本身就带有损模糊,未必不会出现噪边,建议你在PS中打开图片,放大视图,将透明色处的每个色点用铅笔工具点一遍,保证同一色,保存时图像=>模式=>索引,再保存为BMP
[/Quote]

17楼的 首先谢谢你的回答 不过呢 我上面也说了我是直接通过 代码调用本地软件的ICO图标 绝对不会是我图片问题 如果是图片问题 那么电脑桌面软件怎么会没有锯齿呢
dylike 2011-04-04
  • 打赏
  • 举报
回复
GDI+本身就带有损模糊,未必不会出现噪边,建议你在PS中打开图片,放大视图,将透明色处的每个色点用铅笔工具点一遍,保证同一色,保存时图像=>模式=>索引,再保存为BMP
QIAN448043229 2011-04-04
  • 打赏
  • 举报
回复
谢谢楼上的 不过我要的不是窗体整个透明 窗体透明只需要设置一个属性就可以了 我要的是窗体透明 但是 窗体上面的控件不透明 我已经使用了窗体重叠 做出来了 只不过是一些直接调用软件ICO的图片会有锯齿 但是如果设置背景颜色就不会有锯齿 估计是这些控件的父级是 透明的Form窗体而不是 桌面作为底层背景 所以才会出现锯齿白点 有没有办法解决这问题呢
czs06815394 2011-04-04
  • 打赏
  • 举报
回复
e.Cancel = true;
if (this.Opacity > 0)
{
timer1.Start();
}
else
{
e.Cancel = false;

}

上述代码可控制窗体的透明度。。。。。。。。。
QIAN448043229 2011-04-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dylike 的回复:]
选择一个不太可能出现的颜色为透明色,如ARGB(255,255,0,255) 洋红
[/Quote]
如果使用13楼的方法 那个白色锯齿就变成洋红色锯齿了 还是没什么区别 不过还是感谢13楼以及各位
大家可以使用Icon.ExtractAssociatedIcon(“软件路径”).ToBitmap()这个代码来测试下设置下窗体的TransparencyKey属性和窗体背景颜色一致
如果真不行只能使用GDI+了 但是GDI+会经常刷新 因为拖动窗体移动的时候 图片要重绘
dylike 2011-04-04
  • 打赏
  • 举报
回复
或参考一些WIN7透明窗体上绘制图片的资料,该类资料与你的需求类似,既能完成窗体透明,又能保证无噪边.
dylike 2011-04-04
  • 打赏
  • 举报
回复
可以搜索一些GDI+ DrawImage的资料.
  • 打赏
  • 举报
回复
试试:PictureBox外面套一个Panel,然后将Panel设置一个默认底色
QIAN448043229 2011-04-03
  • 打赏
  • 举报
回复
还没人会吗?图片是本地软件图标 通过Icon.ExtractAssociatedIcon(“软件路径”).ToBitmap()获取到Bitmap到PictureBox的
dylike 2011-04-03
  • 打赏
  • 举报
回复
选择一个不太可能出现的颜色为透明色,如ARGB(255,255,0,255) 洋红
QIAN448043229 2011-04-03
  • 打赏
  • 举报
回复
还有没有高手能够帮忙
smith_chan 2011-04-03
  • 打赏
  • 举报
回复
可以用gdi+做,不过推荐使用wpf
QIAN448043229 2011-04-03
  • 打赏
  • 举报
回复
窗体设置了TransparencyKey 和背景颜色一致 透明窗体 软件要求是 透明窗体 图片图标要好像电脑的桌面那样 不能有底色 如果Panel设置默认底色的话是没有锯齿白点的 只有透明才会出现 有没有办法可以让PictureBox的底层是桌面呢
mjp1234airen4385 2011-04-01
  • 打赏
  • 举报
回复
说的对,不过越清晰的图片,也就越大,窗体装载的时候也就越慢。
如果大量的使用,就能感到不爽了。
dickens88 2011-04-01
  • 打赏
  • 举报
回复
楼上说的没错,要处理图片的话用Photoshop最好,WIN自带的擦不出透明效果
加载更多回复(4)

110,536

社区成员

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

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

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