发布网友 发布时间:2024-09-29 08:06
共2个回答
热心网友 时间:2024-09-29 10:04
简单办法:用BitBlt的光栅操作。同样是在paint事件里面,如果判定为失去焦点,在函数最末,用一个“蒙板”方式的memDC选择一个灰度图,进行位光栅操作就可以打到降低亮度的效果。只是如果想*真些,需要多次位运算操作。参考Bitblt函数的光栅操作代码说明:MERGECOPY SRCINVERT等。
还是你的0.3方法,但不是直接取像素点操作,而是将完整的DC内容选取到一个BITMAP上,通过指针运算*0.3或者位运算>>右移的办法,对RGB进行操作,获取新位图后再BitBlt反贴到DC上即可。
第一种办法代码简单、速度快,但效果和你的理想效果有差异,需要多次蒙板校正;第二种办法代码稍微复杂、速度稍慢,可以完整实现你的效果(这个稍慢肯定比你现在的方法快很多)。
热心网友 时间:2024-09-29 10:05
像在东西上盖上一层纱布一样,盖上一层图片!