VC做无锯齿的不规则窗体

本文记录了在VC中创建一个无锯齿、不规则形状窗体的过程,作者首先尝试使用GDI和BMP蒙版,但遇到边缘锯齿问题。通过研究发现,使用带Alpha通道的PNG图像和GDI+可以解决这个问题。在应用GDI+进行绘制时,调整了DrawString函数以正确显示汉字,并解决了透明度和窗口拖动的细节问题。
摘要由CSDN通过智能技术生成

    近日做一VC客户端小程序时,由于对UI稍有要求,于是决定以图片为背景做一个不规则窗体。对过程中遇到的问题进行一个简单记录。


    第一个版本的操作方式是,使用GDI绘图方式,制作了一个BMP的背景图和MASK图,顺利实现了不规则窗体。使用函数 SetLayeredWindowAttributes实现透明度,看起来也没问题。界面要大功告成的样子。结果发现在透明度低的时候,边缘的锯齿状 特别严重....这个显然就极不给力了,必须修改....


   第一步认为是BMP蒙板图MASK边缘不够齐整,于是在画图工具和PS中折腾一阵,弄出一张边缘貌似更好一些的MASK蒙版图,替换后一试,果然没任何改善...仔细一想,确实也应该有锯齿,BMP蒙版方式对于背景图中的每个像素进行的是YES/NO选项,对每个像素来说要么留下要么去除,所以在弧形或者斜向的地方有锯齿是正常的,只是最初由于设置了透明度,不太显眼没看见而已。


    那么用BMP蒙版方式实现背景图,边缘要实现比较好的抗锯齿,看起来比较艰难了。不过不死心是必然的,基本上要完工了,难道要现在完全重新来过。于是果断度娘,下载了不少关于VC实现不规则窗体的,结果发现用这种BMP蒙版抠图方式实现的不规则窗体,都是边缘有锯齿的。哎,没办法,重头再来。


   第二遍为了防止悲剧重演,学乖了,去先搜集些资料再来做,结果发现,做的边缘效果好的,别人用的背景素材是有Alpha通道的png图像....重新打开PS,把背景图编辑成想要的不规则窗体(请注意,边缘羽化),

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值