我想在窗口上面显示文字程序里面把一个窗口弄成了Layered Window
然后建立了一个CompatibleDC用SelectObject把一个PNG图像连同Alpha通道复制到窗口上面
然后用UpdateLayeredWindow把CompatibleDC里面的图像复制到DC上面
然后释放了所有的DC,到这里,一切正常接着GetDC,SetBkMode把背景改透明,SetTextColor把颜色改成0000ff,然后
TextOut(DC,0,0,"test",4)
最后ReleaseDC
可是什么文字都没有出现```换用DrawText,结果一样于是我在UpdateLayeredWindow之前直接把文字画到CompatibleDC里面,这回文字有了,可是更郁闷的事情出现了
尽管用了SetTextColor把颜色改成0000ff 可是文字变成全透明了,鼠标居然可以直接穿透文字点击窗口下面的东西,好像在窗口里面挖了个洞,但是文字又有一点点颜色(透明不彻底-_-``),而且文字的颜色很怪,设成0000ff以后,当窗口下面是深色的时候,显示出来的是粉红,当窗口下面是浅色的时候,红色又变淡了一下,如果窗口下面是白色,字就全部透明了,把TextOut改成DrawText,还是这样
截图:
http://tinypic.com/aeb2h3.jpg怀疑是Alpha通道的问题,换了一张没有Alpha通道的PNG图像,问题依旧,但是在UpdateLayeredWindow的时候,如果把blendFunction里面的AlphaFormat改成AC_SRC_OVER(原来是AC_SRC_ALPHA),问题就解决了,可是这样一来`窗口背景PNG所带的Alpha通道的半透明就没有了,不行啊`怎么办啊```大家帮帮忙`分不够可以再加``