我在程序中使用了UpdateLayeredWindow函数来绘制分层窗口,但是GDI的绘制文字函数DrawText不带alpha通道,所以显示不出来,就算配合AlphaBlend也不行。请问如何给这个文字加上alpha通道呢?(注:我知道gdi+可以,但是gdi+效率摆在那儿,不能用啊)
请求各位大侠给点解决方法?分层窗口GDI绘制文字Alpha

解决方案 »

  1.   

    分子窗口?不明白你的意思如果是说,分两层来实现,底层是layered,上层采用过滤色透明,这个效果不好。如果是说,分层窗口是子窗口,这个win8才支持。
      

  2.   

    看你的名字,猜测你了解directui。
    那么在directui下,你是怎么绘制文字的呢?
      

  3.   

    我之前用过一个方法,算是比较折中:用GDI函数画到HBITMAP上,再用GDIPlus把这个HBITMAP画出来.
      

  4.   


    如果能用gdi+,也就不会有这个提问了。
    我看了一下,金山卫士、迅雷,他们的进程都加载了gdiplus.dll,而且迅雷的安装目录下还有这个XLGraphicPlus.dll。 
    我有点怀疑,directui应该不是基于updatelayeredwindow来做的?directui的思想倒是好理解。
    360安全卫士也是用的directui,但是它没有分层效果。有分层效果的是 360的 自动清理垃圾工具,当然这个界面还是很小的,而且我在拖动时竟然发现,背景图在 360安全卫士 下面,而控件却在360安全卫士上面,这和我之前用 双层窗口时遇到的问题一样,可见它也是用的双层窗口。
      

  5.   

    UpdateLayeredWindow 来刷新窗口  弄一个透明的hdc 画好之后用AlphaBlend复制在窗口dc上
      

  6.   


    directui 绘制有很多办法的。   
    可以贴图式,需要绘制的时候全部销毁清除画板,之后贴在dc上.
    可以覆盖式,每次把图片覆盖在上次的图片上。不能拥有透明度.
    我这个就是贴图方式的。 所有控件拥有独立的透明度。 
      

  7.   

    怎么弄一个透明的hdc呢?求方法,能不能把你这个程序弄透明dc的方法告诉我呢?