国民经济行业分类(GBT80

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DWORD biSize; //本结构所占用字节数 LONG biWidth; //位图的宽度,以像素为单位 LONG biHeight; //位图的高度,以像素为单位 WORD biBitCount; //每个像素所需的位数,
//必须是1(双色)、4(16色)、8(256色)或24(真彩色) …… } BITMAPINFOHEADER;
在MFC应用中绘图
• 在MFC应用程序中,所有的绘制调用均 通过相应的设备环境对象实现。在MFC 类库中,用CDC类封装设备环境对象, 并提供了在窗口的客户程序区域上画图 的方法。
• 所有图形的输出都可以使用CDC类提供 方法来进行--对颜色进行操作、坐标映 射和转换,对多边形和区域进行操作, 绘制各种形状,绘制文本,处理字体等。
其中参数x,y为目标区左上角坐标,nWidth和 nHeight分别为目标区的宽度和高度(逻辑坐 标),pSrcDC为内存设备指针,xSrc和ySrc为 原图中欲显示块左上角坐标,dwRop为复制方 式,常用值为SRCCOPY,即按原样复制。
• 【例6-5】显示一张位图文件(.BMP)。 思路:按上述步骤实现位图的现实即可
绘制矩形、椭圆
• 绘制矩形的成员函数为: BOOL Rectangle(int x1,int y1,int x2,
int y2 ) ; • 绘制椭圆成员函数的原型为: BOOL El l i p s e ( i n t x1, int y1, int x2,
int y2 ) ; 其参数为需要绘制的矩形的左上角坐标 (x1, y1)和右下角坐标(x2, y2)。
画线
• 画线工作需经两步完成:首先确定线的 起始端位置,这可通过调用成员函数 MoveTo完成,其原型为: CPoint MoveTo ( int x , int y ) ;
• MoveTo将绘图位置移至指定坐标处,并 返回移动前的绘图位置。确定了线的起 点后,即可使用成员函数LineTo画线: BOOL LineTo ( int x , int y ) ;
镜像和转置
镜像(mirror)和转置(transpose) 镜像分 水平镜像和垂直镜像两种,水平镜像是 将矩阵的第一列和最后一列对调,第二 列和倒数第二列对调,依次类推;垂直 镜像则是交换行值;转置就是矩阵的转 置。转置和旋转90度是有区别的,转置 后图的宽高对换了。
浮雕
浮雕效果就是只将图像的变化部分突出出来, 而相同颜色部分则被淡化,使图像出现纵深感, 从而达到浮雕效果,采用的算法可以是将要处 理的像素取值为与处于对角线上的另一个像素 间的差值,这样只有颜色变化区才会出现色彩, 而颜色平淡区因差值几乎为零则变成黑色,可 以通过加上一个常量来增加一些亮度,如127, 计算公式如下:
画笔
画笔是用来画线的工具,是CPen类的对象。 / / 声明画笔对象,并创建宽度为3的红色实线笔 CPen penRed(PS_SOLID, 3, RGB(255, 0, 0)); // 使用新的画笔,保存原来的画笔以便恢复 CPen *pOldPen=pDC->SelectObject(&penRed); // 恢复原来的画笔 pDC->SelectObject(pOldPen);
【例6-4】在窗口中随机的画了一些 直线和其它几何形状。
思路:建立MFC框架程序,在OnDraw中写 出相应的绘图代码即可。
• 步骤: 1)新建一个单文档MFC程序,项目名称为
mm065,其余设置不变。 2)在视图类的OnDraw中键入绘图代码。 3 在视图类的开始出饱含以下头文件。 4 编译并运行程序
CDC::SelectObject()方法选定放入当前设 备环境的新对象,并返回一个指向被替换 对象的指针,因此,语句
pOldPen = pDC->SelectObject(&penRed); 保存了原来的画笔。保存并恢复原来画 笔的原因是,每个图形设备接口对象要
占用一个HDC句柄,而可用的句柄数量是 有限的,在使用完后要及时释放。
BMP文件结构
BMP文件由文件头、位图信息头、颜色信息和图形数 据四部分组成。BMP文件头数据结构含有BMP文件的 类型、文件大小和位图起始位置等信息。其文件头 结构定义如下:
typedef struct tagBITMAPFILEHEADER {
WORDbfType; // 位图文件的类型,必须为BM DWORD bfSize; //位图文件的大小,以字节为单位
多indows程序中,应用程序(包括Windows 本身)的输出并不直接面向物理的设备,而是 针对一个称之为设备环境(Device Context) 的逻辑设备进行操作。设备环境包含了关于当 前选定用于一种设备的画笔、画刷、字体和位 图等信息,设备环境与实际设备之间的信息传 送由Windows直接管理。MFC提供了用于若干不 同类型的设备环境的类,应用程序在将任何东 西画到设备中去之前,必须明确索取一个设备 环境。
MFC中的绘图工具对象
• MFC定义了若干种对应于Windows绘图 工具的图形对象,包括画笔、画刷、字 体、位图等。这些Windows绘图工具封 装在MFC图形对象类中,并且都是由 CGdiObject基类派生而来。这些图形对 象类分别是:CPen、CBrush、CFont、 CBitmap 等。
………… DWORD bfOffBits; //位图数据的起始位置,以相对于位图
//文件头的偏移量表示,以字节为单位 } BITMAPFILEHEADER;
位图信息图头
紧接在文件头之后的是位图信息图头,其中的数据用 于说明位图的尺寸等信息。定义如下:
typedef struct tagBITMAPINFOHEADER {
颜色表
信息头之后是颜色表用于说明位图中的颜色(24位位 图没有颜色表),它有若干个表项,每一个表项是 一个RGBQUAD类型的结构,定义一种颜色。 RGBQUAD结构的定义如下:
typedef struct tagRGBQUAD {
BYTErgbBlue; // 蓝色的亮度(值范围为0-255) BYTErgbGreen; // 绿色的亮度(值范围为0-255) BYTErgbRed; // 红色的亮度(值范围为0-255) BYTErgbReserved;// 保留,必须为0
并将位图选入该设备环境: MemDC.SelectObject(&m_Bitmap);
显示位图
• 用CDC类的B i t B l t ( ) 成员函数从内存设备环境 中将位图复制到指定设备(如窗口或打印机)。 BitBlt( ) 函数的原型为:
BOOLBitBlt ( int x , int y , int nWidth, int nHeigh CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop ) ;
显示位图
载入位图资源: BOOLLoadBitmap( LPCTSTRResourceName ) ;
读位图信息: int GetBitmap( BITMAP* pBitMap ) ;
首先应建立一合适的内存设备环境: CDCMemDC; MemDC. CreateCompatibleDC(NULL);
同样,x和y分别表示图像矩阵的行列值。
油画
• 油画通过像素之间颜色的扩散来实现。 公式如下:
【例6-6】 BMP文件的读写及图像的 变换。
• 为了简单起见,以下程序仅处理24位 BMP文件。
DataSizePerLine=(biWidth* biBitCount+31)/32 * 4;
BMP位图的读写与处理
• 将bmp文件读入内存,让后将R、G、B 3个分量分别存储为3个二维矩阵。二维矩 阵的列行分别对应图象的宽度和高度。对 图像的处理就是对矩阵的变换。
旋转:旋转需要有一个旋转中心,通常 的做法是以图像的中心为圆心旋转,下 面的算法保持图像的原有尺寸,超出的 部分被裁剪掉。
} RGBQUAD; 颜色表中RGBQUAD结构数据的个数有biBitCount来确定,当
biBitCount = 1、4或8时,分别有2、16和256个表项;当 biBitCount = 24时,没有颜色表项。
对齐原则
24位真彩色位图,1个像素占3个字节,每个字节表示 一 个颜色分量,顺序由低位到高位分别是蓝、绿、红。同 时,Windows规定一个扫描行所占的字节数必须是4的倍 数(即以long为 单 位 ) , 不足的以0填充。因此,一个扫描 行所占的实际字节数计算为:
相关文档
最新文档