关于在透明窗体上绘制含有alpha通道的png图片的有关问题
关于在透明窗体上绘制含有alpha通道的png图片的问题
小的身为一个渣渣..第一次想要做个桌面程序 被这个问题纠结了两天了..
我想以一个以含有alpha通道的png图片作为显示的窗体
窗体本身是完全透明的 然后在上面绘制一个png图片
绘图部分的代码在窗口的onPaint函数中实现
第一次绘制出来是这种效果 如果成功了的话不论背景怎么改变也都应该达到这种效果

不过绘制出来之后背景是一次性的 不会变 而且当背景改变且进行多次绘制的时候png图片就会出现叠加的情况 成了这样

在二次绘制的时候无论是发送OnEraseBkgnd消息还是让窗口Invalidate都尝试过 依然无法清除之前绘制的内容图片只会不断叠加
GDI+和CImage我都尝试了 结果都是一样的...
个人猜测是在进行二次绘制的时候窗体直接把之前绘制的图像当做背景给重新拾取了
于是我觉得完全刷新重置窗口会不会解决?
但是几个窗口的刷新函数我也都试了 似乎只是重新调用了一下onPaint函数? 总之也没什么效果...
于是我不知道该怎么解决了..愁死我了快..
求各路大神指点!非常感谢!
如果有什么可以替代绘制PNG的方法 只要可以达到图片以外的地方透明 图片本身可以没有半透明效果 也求替代的方法!
------解决方案--------------------
兄弟 你应该使用UpdateLayeredWindow来实现你想要的效果
只有用UpdateLayeredWindow 才能完美实现你的愿望
他可以让你的窗体根据你指定的PNG背景 一模一样 包括RGN 透明度
------解决方案--------------------
http://download.****.net/detail/zhoujielunzhimi/5538917
小的身为一个渣渣..第一次想要做个桌面程序 被这个问题纠结了两天了..
我想以一个以含有alpha通道的png图片作为显示的窗体
窗体本身是完全透明的 然后在上面绘制一个png图片
绘图部分的代码在窗口的onPaint函数中实现
第一次绘制出来是这种效果 如果成功了的话不论背景怎么改变也都应该达到这种效果
不过绘制出来之后背景是一次性的 不会变 而且当背景改变且进行多次绘制的时候png图片就会出现叠加的情况 成了这样
在二次绘制的时候无论是发送OnEraseBkgnd消息还是让窗口Invalidate都尝试过 依然无法清除之前绘制的内容图片只会不断叠加
GDI+和CImage我都尝试了 结果都是一样的...
个人猜测是在进行二次绘制的时候窗体直接把之前绘制的图像当做背景给重新拾取了
于是我觉得完全刷新重置窗口会不会解决?
但是几个窗口的刷新函数我也都试了 似乎只是重新调用了一下onPaint函数? 总之也没什么效果...
于是我不知道该怎么解决了..愁死我了快..
求各路大神指点!非常感谢!
如果有什么可以替代绘制PNG的方法 只要可以达到图片以外的地方透明 图片本身可以没有半透明效果 也求替代的方法!
GDI+
透明窗口
MFC
C++
------解决方案--------------------
兄弟 你应该使用UpdateLayeredWindow来实现你想要的效果
只有用UpdateLayeredWindow 才能完美实现你的愿望
他可以让你的窗体根据你指定的PNG背景 一模一样 包括RGN 透明度
------解决方案--------------------
http://download.****.net/detail/zhoujielunzhimi/5538917