透明贴图,是指贴图时某些部分是完全透明的或半透明的。
本文介绍多种透明贴图的方案,包括:
- 指定透明色贴图(基于 Windows API 函数 TransparentBlt)
- 指定透明色贴图(基于直接操作显示缓冲区)
- 使用三元光栅操作实现透明贴图
- 根据 png 的 alpha 信息实现半透明贴图(基于 Windows API 函数 AlphaBlend)
- 根据 png 的 alpha 信息实现半透明贴图(基于直接操作显示缓冲区)
各种方法各有利弊,大家可以根据自己的需求选择。
1. 指定透明色贴图(基于 Windows API 函数 TransparentBlt)
这是最简单的透明贴图方法。
该方法要求图片素材的透明部分为纯色,因此建议使用 gif 或 png 格式的图片素材。如果使用 jpg 格式的图片素材,那么由于 jpg 的有损压缩,会造成边缘颜色有微小差异,与指定的透明色并不完全相同,从而导
...
bioskey() 函数需要引用头文件 bios.h,这个头文件在 VC 中默认是没有的,将其引用 #include <bios.h> 删掉即可。
功能上,bioskey 可以实现以下三个功能:
- bioskey(0): 返回用户按键。
如果返回值的低 8 位非 0,该值表示按键的 ASCII 码;
如果返回值的低 8 位为 0,该值表示按键的键码。
作为替代,VC 中可以使用 getch() 返回用户按键。对于功能键(如光标键),getch() 需要调用两次,第一次返回 0 或 0xE0,第二次返回键码。
详见:http://msdn.microsoft.com/en-us/library/078sfkak(v=VS.80).aspx
- bioskey(1): 返回是否有按键发生。
如果没有按键,返回 0;
如果有按键,返回该按键值。(该按键仍然保留)
作为替代,VC 中可以使用 kbhit() 返回是否有按键发生。
...