你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
BMP图像切割存储技术与实现(十)
 

4.4  CopyRow函数

// 将源图像的一行拷到目标图像中

BOOL CDib::CopyRow(LPBYTE m_lpSrc, LPBYTE m_lpDes, int n_CopyByte,

                   int n_StartBit, int n_EndBit, int n_DesRowByte)

{

    if(n_CopyByte > n_DesRowByte){

        AfxMessageBox("Error in Copy Row");

        return FALSE;

    }

 

    LPBYTE m_lpMeta, m_pByteNow;

    // 临时数据区

    m_lpMeta = new BYTE[n_CopyByte];

    memcpy(m_lpMeta, m_lpSrc, n_CopyByte);

 

    BYTE m_BTemp = GetConstBYTE(n_EndBit);

    // n_EndBit后的位赋0

    *(m_lpMeta+n_CopyByte-1) &= m_BTemp;

 

    // 调用数组移位操作函数

    ArrayLeftBitMove(m_lpMeta, n_CopyByte, n_StartBit);

 

    // 需拷贝最后一个字节

    if(n_StartBit <= n_EndBit+1)

        memcpy(m_lpDes, m_lpMeta, n_CopyByte);

    // 移位后,最后一个字节的内容都已移到前一字节中

    else

        memcpy(m_lpDes, m_lpMeta, n_CopyByte-1);

 

    delete [] m_lpMeta;

    return TRUE;

}

该函数将原图像在切割矩形内的一行数据拷到目标图像中。为处理切割矩形中每行起始像素的起始位不是原图像中所在字节起始位的情况(n_StartBit不为0),先将该行数据拷到临时数据区m_lpMeta,将该行数据进行处理后,再拷贝到目标图像中。

m_lpSrc:目标图像该行在原图像中的起始位置;m_lpDes:目标图像该行的起始位置;n_StartBit:该行起始位在原图像中相应字节中的位置;n_EndBit:该行末位在原图像中相应字节中的位置;n_DesRowByte:目标图像中每行占用的字节数。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089