📄 imagebuffer.h
字号:
/********************************************************************
*
* =-----------------------------------------------------------------=
* = ____ _________ =
* = / _ \ \___ __/ =
* = / /_/ / ____ / / =
* = / _ \ ● / _ \ / / =
* = / /_/ // // / / // / =
* = \______//_//_/ /_//_/ =
* = =
* = Copyright (c) BIN Technology studio,2004 =
* = LET'Z BT =
* =-----------------------------------------------------------------=
*
* FileName : ImageBuffer.h
* Description : 位图缓冲区
*
* Author : 风间苍月(TuQbasic)
* Email : tuqbasic@sohu.com
*
* Create : 2004.04.09
* LastChange : 2004.05.03
*
* History :
********************************************************************/
#pragma once
// 图像缓冲区模板,扫描线按字对齐
template <typename _T>
class CImageBuffer
{
public:
CImageBuffer(unsigned int width, unsigned int height)
: m_width(width)
, m_height(height)
, m_lPitch(0)
, m_pBuf(NULL)
, m_pScanLine(NULL)
{
m_lPitch= m_width * sizeof(_T);
if (m_lPitch % 4)
m_lPitch= m_lPitch + 4 - m_lPitch % 4;
m_pBuf= reinterpret_cast<_T *>(new unsigned char[m_lPitch * m_height]);
// 设置扫描线地址
m_pScanLine= reinterpret_cast<_T **>(new void *[m_height]);
unsigned char *pc= reinterpret_cast<unsigned char *>(m_pBuf);
for (unsigned int i= 0; i < m_height; i++)
{
m_pScanLine[i]= reinterpret_cast<_T *>(pc);
pc+= m_lPitch;
}
}
~CImageBuffer(void)
{
delete[] m_pScanLine;
delete[] m_pBuf;
}
unsigned int m_width;
unsigned int m_height;
unsigned int m_lPitch; // 扫描线间距
_T *m_pBuf; // 连续的缓冲区
_T **m_pScanLine; // 每条扫描线的地址
protected:
CImageBuffer(const CImageBuffer<_T>& r) {};
CImageBuffer<_T>& operator= (const CImageBuffer<_T>& r) {};
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -