你好我也刚学VC,最近也在做这方面的学习研究,做的是视频的,一帧也是一幅画面,我的解决办法是编写一个相关的类专门处理这方面的,现在还在编写与测试阶段,欢迎交流,头文件如下:
/**************************************************************************/
/* CBytePlane类 *******************************/
/* Byte平面像素点的类型 *******************************/
/* *******************************/
/* 作者: 李国庆 *******************************/
/* 日期: 2007-4 *******************************/
/* E-Mail: [email protected]  *******************************/
/* E-Mail: [email protected] *******************************/
/**************************************************************************/class CBytePlane
{public: unsigned char* m_pbp; //指向像素点的数值区

////构造函数
CBytePlane();
CBytePlane(unsigned int L, unsigned int W );////析构函数
~CBytePlane();////返回指定像素区域的数据值
unsigned char* GetPlane( unsigned int x, unsigned int y, unsigned int length, unsigned int width); //矩形像素区
unsigned char* GetPlane( unsigned int x, unsigned int y, unsigned int squlth); //正方形像素区////返回指定像素点的值
unsigned char GetByteAt( unsigned int x, unsigned int y);
unsigned int GetLength();
unsigned int GetWidth();////按要求清空指定区域,像素点置零
void ClearPlane();
void ClearPlane( unsigned int x, unsigned int y, unsigned int length, unsigned int width);
void ClearPlane( unsigned int x, unsigned int y, unsigned int squlth);////释放指针指向的像素区占用的内存区
void DeleteAll();////设置指定像素点的数值
BOOL SetByteAt( unsigned int x, unsigned int y, unsigned char ch);
BOOL SetByteAt( unsigned int x, unsigned int y, unsigned char *ps);////载入另一块的全部像素值到指定区域
BOOL SetPlane( CBytePlane LoadPlane, unsigned int x, unsigned int y);
BOOL SetPlane( unsigned char *ps , unsigned int x, unsigned int y, unsigned int length, unsigned int width );private: unsigned int m_length, m_width;
};
分块的函数还没有编写原始换面和分出来的画面的YUV分量都可以是这个类的对象