VC 我想用半透明的颜色填充一个区域??

来源:百度知道 编辑:UC知道 时间:2024/06/03 17:32:22
1.不能用GDI+,想用EVC所以GDI+不行
2.就是创建一个半透明的画刷,而不是要半透明窗体或者位图
3.谢谢了
首先,谢谢stone_dongdong,我想跟背景无关的,有可能 几个区域叠加 他们都是半透明的怎么办啊
能直接创建个半透明颜色的画刷么
谢谢大家了 我在研究研究吧 虽然没直面解决但是又明白不少!

用位图遮罩来实现,我曾经做过类似的工作。

建议你参考一下这里的文章吧:
http://shareganku.blog.com.cn/archives/2007/2239257.shtml

手工实现。
首先读取背景位图数据 BitBlt 应该在evc可用,将dib数据保存在一个缓存里面。
装入要绘制的画刷数据,将背景数据和画刷数据合成,当然透明度就在这里调整了,再保存到画刷数据,通过bitblt再写到窗口dc上去。

windows的那几个透明处理的api内部实现就是这么干的,只不过都是汇编写的在非分页内存区运行,所以效率较高。(关于数据合成那块,你也可用汇编写)。

包括现在vista风格的颜色渐变效果,都可用不用windows的api,直接来写,只要cpu够快,你的脑子够灵活,可以实现比vista更好的效果

GDI不支持这个,只有一个简单的半透明位图绘制函数。别说GDI,连DirectDraw都不支持这个。

如果你想实现复杂的半透明效果只能完全接管窗口的绘制。

GDIPlus
去我的博客看看我的透明玻璃窗体。。。是不是这个效果
http://blog.sina.com.cn/qqlove163