vs 2013去背景的函数,适用于graphics.h的工程项目(制作掩码图)

由于现在网上对于graphics的教程还不是特别多,貌似也没有特别笼统的教程出现,现贴出一份可以作为制作掩码图使用的函数。

IMAGE maskWork(IMAGE *img) {
	IMAGE maskbitmap(WIDTH1, HEIGH1);
	DWORD *pmemimg = GetImageBuffer(img);
	DWORD *pmemmaskbitmap = GetImageBuffer(&maskbitmap);
	COLORREF maskbk = pmemimg[0];
	for (int i = 0; i < WIDTH1*HEIGH1; i++)
	{
		if (pmemimg[i] <= 0x555555 && pmemimg[i] >= 0)//0x55555555是深灰色
		{
			pmemmaskbitmap[i] = WHITE;
		}
		else
			pmemmaskbitmap[i] = BLACK;
	}
	return maskbitmap;
}

函数使用方法

// main.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <bits/stdc++.h>
#include <graphics.h>
using namespace std;
#define WIDTH 1080
#define HEIGH 640
#define WIDTH1 50
#define HEIGH1 50
enum INDEX {
	i_gold = 4,
	i_stone = 8,
	i_money = 10,
};
IMAGE img[15];
IMAGE img2[3];
void loadimg() {
	//项目->配置->常规->字符集切换成多字节可正常运行
	loadimage(img, "./images/0.jpg", WIDTH, HEIGH);
	for (int i = 1; i <= 10; i++) {
		char filename[20] = "";
		sprintf(filename, "./images/%d.jpg", i);
		loadimage(img + i, filename, WIDTH1, HEIGH1);
	}
	loadimage(img2, "./images/stone.jpg", WIDTH1, HEIGH1);
	loadimage(img2 + 1, "./images/gold.jpg", WIDTH1, HEIGH1);
	loadimage(img2 + 2, "./images/wallet.jpg", WIDTH1, HEIGH1);
}

IMAGE maskWork(IMAGE *img) {
	IMAGE maskbitmap(WIDTH1, HEIGH1);
	DWORD *pmemimg = GetImageBuffer(img);
	DWORD *pmemmaskbitmap = GetImageBuffer(&maskbitmap);
	COLORREF maskbk = pmemimg[0];
	for (int i = 0; i < WIDTH1*HEIGH1; i++)
	{
		if (pmemimg[i] <= 0x555555 && pmemimg[i] >= 0)//0x55555555是深灰色
		{
			pmemmaskbitmap[i] = WHITE;
		}
		else
			pmemmaskbitmap[i] = BLACK;
	}
	return maskbitmap;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int n;
	initgraph(WIDTH, HEIGH/*, SHOWCONSOLE*/);
	loadimg();
	putimage(0, 0, img);
	IMAGE maskbitmap = maskWork(img + i_money);
	putimage(300, 380, &maskbitmap, SRCAND);
	putimage(300, 380, img + i_money, SRCPAINT);
	maskbitmap = maskWork(img + i_stone);
	putimage(300, 500, &maskbitmap, SRCAND);
	putimage(300, 500, img + i_stone, SRCPAINT);
	while(1);
	return 0;
} 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值