本文只是把两张等大小的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;