C++-MFC(14)-拼接两张Bitmap图片

本文只是把两张等大小的bitmap图左右拼接而已,基本操作,给大家一个参考。
直接上代码
 

    //1.获得两张图片
    CBitmap cbmp1,cbmp2;
	cbmp1.LoadBitmap(IDB_BITMAP1);
	cbmp2.LoadBitmap(IDB_BITMAP2);

	BITMAP bmp1, bmp2;
	int m_height = 0;
	int m_width = 0;
	
	cbmp1.GetBitmap(&bmp1);    //cbmp1 转换成CBitmap->BITMAP 结构体
	long bitmapSize1 = bmp1.bmHeight * bmp1.bmWidthBytes;//字节数
	BYTE* px1 = new BYTE[bitmapSize1];
	DWORD nBytes1 = cbmp1.GetBitmapBits(bitmapSize1, px1);//把位图的内容放入缓冲区px1中,返回值为个数
	for (int i = 0; i < bitmapSize1; i++)
	{
		BYTE temp = px1[i];
	}

	cbmp2.GetBitmap(&bmp2);    //cbmp2 转换成CBitmap->BITMAP 结构体
	long bitmapSize2 = bmp2.bmHeight * bmp2.bmWidthBytes;
	BYTE* px2 = new BYTE[bitmapSize2];
	DWORD nBytes2 = cbmp2.GetBitmapBits(bitmapSize2, px2);//
	if (bmp1.bmBitsPixel != 32 || bmp2.bmBitsPixel != 32)
	{
		::MessageBox(NULL, _T("此程序只能在 32 bit 显示模式中显示"), _T("警告"), 0);
		return;
	}
		
	int rgb_b, x, y, i;
	int PixelBytes = bmp1.bmBitsPixel / 8;//4个像素

	BYTE* px3 = new BYTE[bitmapSize1 + bitmapSize2];
	memcpy(px3, px1, bitmapSize1);
	memcpy(px3 + bitmapSize1, px2, bitmapSize2);

    //2.生成新图片
    CBitmap           bmpNew;
	bmpNew.CreateBitmap(bmp1.bmWidth+bmp2.bmWidth, bmp2.bmHeight,1,32, px3);
	BITMAP bmNew;
	bmpNew.GetBitmap(&bmNew);
	int height = bmNew.bmHeight;
	int width = bmNew.bmWidth;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值