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;

 

原文链接: https://www.cnblogs.com/jasmineTang/p/14369174.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/357515

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午11:48
下一篇 2023年3月2日 上午11:48

相关推荐