Miky,我看了你的笨笨钟,非常不错,特别是窗口处理得非常好,请问你是不是用GDI+做的,你又是怎么实现窗口中有的地方半透明,而有的地方不透明呢??谢谢

解决方案 »

  1.   

    你已经从star升级为supper了,还不让偶们来蹭蹭
      

  2.   

    那干脆让他把源码公布出来给大家SEE SEE。
      

  3.   

    引自LY的风格:
      这个没有什么的,处理消息,调用API,熟悉GDI,小CASE
    ------------------------------哈哈,,,,,
      

  4.   

    半透明的图像其实是利用程序将两张图片进行混合后的效果,也就是图形的Alpha混合,要得到混合图片,就必须对每个点分别进行处理。以16位色彩为例:    16位色彩下,每个像素都用一个WORD来表示,有16位二进制。这16位,分成三段分别表示像素的R、G、B值。现在的显示卡有两种:555格式的RGB分别各占5位最高位空、565格式G的值占6位,其他两个分量各占5位。  555格式的RGB: NRRRRRGGGGGBBBBB   
      565格式的RGB: RRRRRGGGGGGBBBBB   
     
        16bit的Alpha混合首先必须分别对原和目的表面的像素分色。这可以通过位操作来实现,用像素值分别与RGB对应的特定值进行与操作将多余的其他色去掉,最后通过移位去掉后面的0。分色后,混合正式开始,我们将分色得到的R、G、B的各分色分别混合。公式:A=目的颜色、B=资源颜色、Alpha=混色深度(0 < alpha < 1)    混合后的颜色=((A-B) * Alpha)>>5+B    分别混合好R、G、B的色后,最后还需要将他们合成,这是个简单的步骤,与分色相反的移位,然后将三个色值按位或操作就可以了