vc怎么实现窗体透明呢?
菜鸟二号 2010-11-22 01:51:42 想大家都见过那种透明的窗体,例如:QQ的透明设置,千千静听的透明,....高级的如:win7的透明窗体...。
也许我们最先联想到的函数有SetLayeredWindowAttributes和UpdateLayeredWindow
先不说这两个函数的限制有多大,就拿毛玻璃透明来说,我想用这两个函数就很难实现了。
因此,不能纠结在这两个函数上,而是要了解其内部原理。可是其原理是什么呢?我就不得而知了...
我曾想过,透明的话,要获取背景然后和窗体进行透明融合计算,不过这种即使能勉强做好,估计也很占cpu,而且要时时更新(不知道背景是否变,所以要实时的重新计算),这显然不可取...
因此,我想知道的是,这个透明是怎么实现的呢?换言之,窗体应该只是一个矩形,而呈现在桌面这个更大的矩形里(我的想法),只是存在图层的差异,那是否是要像素从最底层的图层一直计算到最高的图层,最终在显示出来,如果是要怎么做呢?
由于对windows窗体理解不深,如果发现有言误之处还望指出,谢谢大家
还是总结一下吧,怎么不用上述的两个函数来实现窗体透明呢?如果大牛你知道,还望告知小虾,谢谢~\(≧▽≦)/~啦啦啦,再同时,分不是问题,问题如题