手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

怎样在贴图时去掉背景

时间:2024-10-19 11:16:44

在进行游戏编程时,经常需要在粘贴位图时去掉背景(即位图的背景不显示,例如下图所示的飞机位图)。那么,这该怎么进行呢?下面,我们以 VS2013 为例,来给大家详细讲解。

怎样在贴图时去掉背景
怎样在贴图时去掉背景

工具/原料

VS2013

一、位图准备

1、要想实现粘贴位图去背景,首先需要对要粘贴的位图进行加工,并且需要再制作一个屏蔽位图。具体方法如下:左图:要贴的位图(去背景部分做成黑色)右图:屏蔽图(将飞机部分做成黑色,去背景部分做成白色)

怎样在贴图时去掉背景

二、原理简介

1、位图准备好以后,首先将屏蔽图与背景图做 AND 运算,这一步的作用是露出背景。具体原理如图所示。

怎样在贴图时去掉背景

2、然后,再将待粘贴的图(这里是飞机图)与背景图做 OR 运算,这一步的作用是露出待粘贴图的前景图(即飞机)。具体原理如图所示。

怎样在贴图时去掉背景

三、代码实现

1、作为一个最简单的示例,我们将创建一个对话框,并在对话框加上银河背景,然后将飞机位图去掉黑色背景粘贴上去。示例的效果如图所示。

怎样在贴图时去掉背景

2、首先,我们使用 DialogBox 在主函数中创建一个模态对话框。其中 IDD_DLG 为对话框模板资源ID。

怎样在贴图时去掉背景

3、然后,我们写对话框程序 DlgProc,并在 DlgProc 函数中声明必要的溴腻男替位图句柄、设备内容句柄,以及其他需要用到的变量。注意,在这儿我们将位图句柄声明为静态变量,以便保证位图句柄在函剞麽苍足数内赋值后保持可用;同时将 hdc 和内存兼容DC mdc 也设为静态变量,以便仅作一次初始化。

怎样在贴图时去掉背景

4、接着,我们根据前面所述,先给对话框粘上作为背景的星空位图,再将飞机位图去掉背景粘贴上去。贴图的核心代码如图所示。注意,一般贴图的代码适宜放在 WM_PAINT 消息中进行。

怎样在贴图时去掉背景
© 手抄报圈