VC编程心得.doc
文本预览下载声明
VC编程心得
1 在视类里显示东西ONDRAW(),在文档里显示东西用ONPAINT;
2 以AFX_开头的注释对是ClassWizard添加并管理的,用户不要对其进行任何修改,即使是注释也不要删除它们;
3 UpdateData(TRUE); //更新控件变量,TRUE--从“控件”到“变量”传递;
UpdateData(False) //更新对话框, FALSE—从变量到控件;
pView-IsKindOf(RUNTIME_CLASS(CTgtDRTView))) // IsKindOf判断运行时是否为我们自己定义的视图;
str.MakeLower(); //转换成小写字母,void MakeUpper( )转换成大写字母;
BMP格式:((m_lWidth *8)+31)/32*4 ,要能被4整除;
BMP文件格式组成:文件头(14字节)+信息头(40字节)+调色板+图像数据(按行存放)
BMP像的描述信息
Typedef struct tagBITMAPINFOHEADER{ //bmih
DWORD biSize; //数据结构的尺寸
LONG biWidth; // 位图以像素为单位的宽
LONG biHeight; // 位图以像素为单位的高
WORD biPlanes; //目标设备的平面数,必须为1
WORD biBitCount; //每一个色平面像素位数1、4
DWORD biCompression; //压缩类型BI_RGB,BI_REL4
DWORD biSizeImage; //图象以字节为单位的尺寸
LONG biXPelsPerMeter; //x方向的分辨率dpm
LONG biYPelsPerMeter; //y方向的分辨率dpm
DWORD biClrUsed; //实际使用色彩数
DWORD biClrImportant; //重要色彩数
} BITMAPINFOHEADER
24位真彩色图象存储格式
24位真彩色图象格式在16位编辑器(例如VC编辑器)中打开,可以看到图象的二进制数据。
24位真彩色的二进制数据为:
包括位图文件头、位图信息头和位图阵列三部分。
1、位图文件头
位图文件头用来记录文件大小的一些信息,在文件中占14个字节,存储的内容如下:字节 1 2 3 4 5 6 7 8 9 10 11 12 13 14
000000 42 4D CC B4 02 00 00 00 00 00 36 00 00 00
其中:
42 4D为位图的标志,即ASCII码BM
CC B4 02表示位图文件的总字节数,换算成十进制为(CCB402)H=(177356)10,即这副图象的大小为177356字节。
00 00 00 00为保留字节,用来存储文件大小的数据;
36 00 00 00 00表示位图阵列的起始位置,(36)H=(54)10即54字节开始为位图阵列。
2、位图信息头
位图信息头记录和位图相关的一些信息,在文件中占40个字节,存储的内容为:
字节 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
000000 28 00
000016 00 00 2C 01 00 00 C5 00 00 00 01 00 18 00 00 00
000032 00 00 00 00 00 00 12 0B 00 00 12 0B 00 00 00 00
000048 00 00 00 00 00 00
其中:
28 00 00 00表示信息头的长度,(28)H=(40)10,即 信息头占40个字节;
2C 01 00 00表示位图宽度,单位为像素。(012C)H=(300)10,即位图的宽度为300个像素。
C5 00 00 00表示位图高度,单位为像素。(C5)H=(197)10,即位图的高度为197个像素。
01 00表示位图设备级别
18 00位图级别,(0018)H=(24)10,即24位真彩色;
00 00 00 00表示压缩类型,为零表示不压缩;
00 00 00 00保留字节;
12 0B 00 00表示水平分辨率
12 0B 00 00表示垂直分辨率
00 00 00 00表示位图实际使用的颜色表中的颜色变址数
00 00 00 00表示位图显示过程中被认为重要颜色变址数。
3、位图阵列
位图阵列,即像素表示部分,每个像素点由3个字节的数据组成,按照从左到右的顺序,分别表示蓝色、绿色、红色。
在VC++中的WINGDI.h中对于位图的编码和格式有更加详细的定义,下面给出24位真彩色位图格式在VC++中
显示全部