updatelayeredwindow在VB中的具体用法
本人想做一个有多种透明度的窗体:比如说,有一个天空的png图片(32位的ico勉强了),窗体不同部分的透明度和png图片不同部分的alpha值保持一致(打个比方:云厚的地...
本人想做一个有多种透明度的窗体:比如说,有一个天空的png图片(32位的ico勉强了),窗体不同部分的透明度和png图片不同部分的alpha值保持一致(打个比方:云厚的地方不怎么透明,薄的地方比较透明,没有云全透明)
SetLayeredWindowAttributes和get/SetWindowLong并不能解决这个问题,它们的作用只是让某种颜色完全透明或让整个窗体仅用一种透明度显示.我需要的是多种透明度.
在网上看到updatelayeredwindow可以解决这个问题,可是具体应该怎么做?我查了好久没有找到相关的代码.
那种包含"半透明窗体(窗体对鼠标点击有反应): 半透明窗体(窗体对鼠标点击无反应): "关键字的代码就不要发了,本人看过,代码中除了对updatelayeredwindow进行了声明就什么都没有.
如果有高手,另外追分!
Ps:vb本身对png图片并不支持如何解决该问题?
先谢谢了 展开
SetLayeredWindowAttributes和get/SetWindowLong并不能解决这个问题,它们的作用只是让某种颜色完全透明或让整个窗体仅用一种透明度显示.我需要的是多种透明度.
在网上看到updatelayeredwindow可以解决这个问题,可是具体应该怎么做?我查了好久没有找到相关的代码.
那种包含"半透明窗体(窗体对鼠标点击有反应): 半透明窗体(窗体对鼠标点击无反应): "关键字的代码就不要发了,本人看过,代码中除了对updatelayeredwindow进行了声明就什么都没有.
如果有高手,另外追分!
Ps:vb本身对png图片并不支持如何解决该问题?
先谢谢了 展开
1个回答
展开全部
使用了UpdateLayeredWindow方法绘制之后就无法使用vb原有控件了,要自己重新写控件。具体代码可以参考以前网上的一个“99%仿vista窗体”的代码,虽然个人认为这个程序运行后的效果还是不理想(实在太卡了),但是里面基本都是通过gdi+和UpdateLayeredWindow实现的,值得参考。
vb本身无法处理png图片,所以在加载png图片是要用byte数组加载。然后用gdi+绘制到窗体或图片框,但是注意控件picture属性是无法保存png图片的。从头到尾都要使用byte数组进行处理保存。
vb本身无法处理png图片,所以在加载png图片是要用byte数组加载。然后用gdi+绘制到窗体或图片框,但是注意控件picture属性是无法保存png图片的。从头到尾都要使用byte数组进行处理保存。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询