怎么样在CView视图里直接用pDC画一个透明的颜色区域........

解决方案 »

  1.   

    用VC不能简单解决透明度问题,但可调用OpenGL函数
          void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)
    等解决。具体怎么调用,非三言两语可讲清,需读有关OpenGL资料。
      

  2.   

    我不知到用VC能不能直接解决,因为我觉得要想使图形“半”透明是和通道有联系的,而能保存通道信息的图片格式只有TGA,TIF(我知道的),但VC不能直接用这两种格式的图片,其实你可以试试用ACTIVESKIN这个工具,他可以把TGA加载到VC中,保存通道信息。你在作图片时把图片的半透明部分的通道设成灰色,不想显示的部分设成黑色,显示的部分设成白色。(最好看看PHOTOSHOPO方面的书)
      

  3.   

    AlphaBlend()
    但是Win98以后才支持(应该没问题?)
      

  4.   

    Mackz(在相互) 
        请问AlphaBlend()怎么用.能否告知具体的代码...
     nabie() 
        我说的就是半透明的纯色块,你说的很有道理..具体怎么样混合,能否告知代码??
     必不吝分数,不够另开再给.................
    我的Email: [email protected]
      

  5.   

    自己看MSDN吧,什么都帮你做了,你能学什么?
      

  6.   

    我没有用 AlphaBlend(),因为它必须在 WIN98 以后才能支持。混合的方法是:dest_color = (src_color1 * alpha1 + src_color2 * alpha2) / (alpha1 + alpha2)为了提高效率,一般 alpha1 + alpha2 都为 2 的幂,如 64 或 256,也就是总共支持的透明级别数,比如如果是 64,上面的公式可以变为dest_color = (src_color1 * alpha1 + src_color2 * (64 - alpha1)) >> 6这里的 dest_color 为 RGB 中的一个分量,你需要对每个分量都进行计算。
      

  7.   

    对了,RGB 的分量都是字节,在做混合运算时别忘了把它们转换成整数,不然会溢出,这样得到的结果就不对了。