windows 透明贴图两套体系

windows游戏绘图技巧

透明贴图的两套体系

在GDI中,想要透明贴图,主要有两套解决方案:

  • 透明遮罩法
  • 透明色彩法

透明遮罩法

GDI透明遮罩法:利用BitBit函数中的Raster光栅值的运算,来将图片中不希望出现的部分处理掉,称这种方法为“去背”;

 WINGDIAPI BOOL  WINAPI BitBlt( _In_ HDC hdc, 		//目标设备环境句柄
                               _In_ int x, 			//目的DC的x坐标
                               _In_ int y, 			//目的DC的y坐标
                               _In_ int cx, 		//贴到目的DC的宽度
                               _In_ int cy, 		//贴到目的DC的高度
                               _In_opt_ HDC hdcSrc, 	//源设备环境句柄
                               _In_ int x1, 			//来源DC的x坐标
                               _In_ int y1, 			//来源DC的y坐标
                               _In_ DWORD rop);			//贴图方式

透明遮罩法的思路:用代码实现图片的OR与AND运算,操作透明遮罩法相关的光栅操作码为一下两个:

  • SRCAND:通过使用AND操作符来将源和目标矩形区域内的颜色合并
  • SRCPAINT:通过使用布尔类型OR操作符将来源和目标矩形区域的颜色合并
VOID Game_Paint( HWND hwnd )
{
	//先贴上背景图
	SelectObject(g_mdc,g_hBackGround);
	BitBlt(g_hdc,0,0,WINDOW_WIDTH,WINDOW_HEIGHT,g_mdc,0,0,SRCCOPY);    //采用BitBlt函数在g_hdc中先贴上背景图

	//用透明遮罩法绘制出第一个人物
	SelectObject(g_mdc,g_hCharacter1);
	BitBlt(g_hdc,50,WINDOW_HEIGHT-579,320,640,g_mdc,320,0,SRCAND);//透明遮罩法第一步,即将屏蔽图与背景图做"AND"运算 
	BitBlt(g_hdc,50,WINDOW_HEIGHT-579,320,640,g_mdc,0,0,SRCPAINT);//透明遮罩法第二步,即将前景图与背景图做"OR"运算

	//用透明遮罩法绘制出第二个人物
	SelectObject(g_mdc,g_hCharacter2);
	BitBlt(g_hdc,450,WINDOW_HEIGHT-584,400,584,g_mdc,400,0,SRCAND);//透明遮罩法第一步,即将屏蔽图与背景图做"AND"运算
	BitBlt(g_hdc,450,WINDOW_HEIGHT-584,400,584,g_mdc,0,0,SRCPAINT);//透明遮罩法第二步,即将前景图与背景图做"OR"运算
}

透明色彩法

透明色彩法:利用贴图时可用设置某种颜色为透明色的函数,如TransparentBlt函数,AlphaBlend函数,达成直观的透明背景显示方法;

WINGDIAPI BOOL WINAPI TransparentBlt(
    _In_ HDC hdcDest,			//目标环境设备的句柄
    _In_ int xoriginDest,		//目标矩形左上角的X轴坐标
    _In_ int yoriginDest,		//目标矩形左上角的y轴坐标
    _In_ int wDest,	
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值