VC 第4章图形设备接口_第1页
VC 第4章图形设备接口_第2页
VC 第4章图形设备接口_第3页
VC 第4章图形设备接口_第4页
VC 第4章图形设备接口_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本章要求本章要求: 第第4 4章章 图形设备接口图形设备接口 l设备环境DC l图形设备接口:Cpen、CBrush、Cbitmap、CRgn、 CFont、CPalette. l文本字体、颜色的控制 l位图显示 1.2.1 画笔CPen 1.2.2 画刷CBrush 1.2.3 位图CBitmap 1.2.4 区域CRgn 4.1.5 字体CFont 4.1.6 设备环境CDC 4.1.7 调色板CPalette 4.1 GDI4.1 GDI对象对象 4.1.1 4.1.1 画笔画笔CPenCPen 画笔(CPen)用于在设备环境中绘制直线、曲线和多边形边框。其主 要方法如表所示。 方 法

2、描 述 CPen 构造函数,构造一个CPen对象 CreatePen 用指定的风格、宽度和画刷属性 创建一个逻辑装饰画笔或几何画 笔 CreatePenIndirect 通过LOGPEN结构来创建一支画笔 FromHandle 用HPEN句柄返回一个CPen对象的 指针 HPEN 返回连接到CPen对象上的HPEN句 柄 GetLogPen 获取LOGPEN结构 GetExtLogPen 获取EXTLOGPEN结构 画刷(CBrush)用于填充诸如多边形、椭圆和路径等图形内部区 域。其主要方法如表所示。 4.1.2 4.1.2 画刷画刷CBrushCBrush 方 法 描 述 CreateSo

3、lidBrush 创建实体画刷 CreateHatchBrush 创建虚体画刷 CreateBrushIndirect 通过LOGBRUSH结构创建画刷 CreatePatternBrush 通过颜色模板创建画刷 CreateDIBPatternBrush 通过位图创建画刷 CreateSysColorBrush 通过颜色创建画刷 位图是常用的图像存储格式。它实际是一种位矩阵,每一个显示 像素都对应于其中的一个或多个位。可以利用位图来表示图像,也可 以利用它来创建画刷。在利用位图创建画刷时必须用SelectObject() 将其选入设备环境后才可使用,结束时需调用DeleteObject()将

4、其删 除。 位图CBitmap类的主要方法 4.1.3 4.1.3 位图位图CBitmapCBitmap 方 法 描 述 LoadBitmap 从应用程序的可执行文件中 加载指定文件名或ID的位图 资源 LoadOEMBitmap 加载一个Windows预定义位 图 LoadMappedBitmap 建立一个映射的位图 CreateBitmap 用指定的宽度、高度和位模式初 始化依赖于设备的内存位图 CreateBitmapIndirect 用lpBitmap指向的结构中指定的 宽度、高度和位模式初始化位图 CreateCompatibleBitmap 初始化一个与pDC指定的设备上 下文兼容

5、的位图 CreateDiscardableBitmap 用一个可丢弃、与指定设备兼容 的位图初始化对象 SetBitmapBits 用lpBits指定的位置设置位图的 位值 GetBitmapBits 得到位图的位值 SetBitmapDimension 设置位图的高度和宽度并且返回 前一个位图的维数 GetBitmapDimension 获取位图的宽度和高度 区域(CRgn)是由多边形、椭圆或二者组合形成的一种范围,可 以利用它来进行填充、裁剪某个区域。 区域CRgn类的主要方法 4.1.4 4.1.4 区域区域CRgnCRgn 方 法 描 述 CreateRectRgn 用一个矩形区域来初

6、始化 CRgn对象 CreateRectRgnIndirect 用由一个RECT结构定义的矩 形区域来初始化CRgn对象 CreateEllipticRgn 用一个椭圆形区域来初始化 CRgn对象 CreateEllipticRgnIndirect 用由一个RECT结构定义的椭 圆形区域来初始化CRgn对象 CreatePolygonRgn 用一个多边形区域来初始化 CRgn对象 CreatePolyPolygonRgn 用一系列封闭的多边形区域来初 始化CRgn对象 CreateRoundRectRgn 用一个圆角的矩形区域来初始化 CRgn对象 CombineRgn 设置一个CRgn对象,

7、使它等效于 两个指定的CRgn对象的联合 CopyRgn 设置一个CRgn对象,使它为一个 指定的CRgn对象的复制 CreateFromPath 从被选入指定设备环境的路径下 创建一个区域 CreateFromData 根据指定的区域和变换数据创建 一个区域 EqualRgn 检查两个CRgn对象,确定它们是 否相等 GetRegionData 用描述指定区域的数据来填充指 定的缓冲区 字体(Cfont)是一种具有某种风格和尺寸的所有字符的完整集合,它 常常被当作资源存于磁盘中,其中有一些还依赖于某种设备。 字体的主要方法 4.1.5 4.1.5 字体字体CFontCFont 方 法描 述

8、CreateFontIndirect 初始化一个由LOGFONT结构 给出其特征的CFont对象 CreateFont 初始化用指定特性定义的 CFont对象 CreatePointFontIndirect 与CreateFontIndirect相 似,但字体高度用0.1点定 义而不是逻辑单位 CreatePointFont 用指定高度和字体初始化 一个CFont对象 CDC类是Device Context(设备环境或直译为设备上下文)对象的 基类,它提供了处理显示器或打印机等设备的方法,可以进行绘图操 作,设置绘制对象的颜色、大小等属性,并将绘制的图形输出到显示 器或打印机上。CDC类就像是

9、一个画板,为GDI对象提供显示的空间。 设备上下文CDC类的方法 4.1.6 4.1.6 设备环境设备环境CDCCDC 方 法描 述 CDC 构造函数,创建CDC类对象 CreateDC 创建一个设备上下文 CreateIC 创建一个信息上下文 CreateCompatibleDC 创建一个和指定设备上下文相兼容 的内存设备上下文 DeleteDC 删除设备上下文 调色板为应用程序和颜色输出设备之间提供了一个接口。通过这 个接口,应用程序可以拥有自己的颜色索引,提高程序的运行速率及 颜色处理能力。 调色板Cpalette主要方法 4.1.7 4.1.7 调色板调色板CPaletteCPalet

10、te 方 法描 述 CPalette 构造一个CPalette对象 CreatePalette 创建一个调色板 CreateHalftonePalette 创建一个半色调色板 Fromhandle 从HPALETTE句柄得到CPalette对象 指针 AnimatePalette 替换由CPalette对象标识的逻辑调 色板中的项 GetNearstPaletteIndex 返回逻辑调色板中最匹配某个颜 色值项的索引 ResizePalette 将CPalette对象所指定的逻辑调 色板的大小改变为指定的项数 GetentryCount 获取一个调色板中的调色板项数 目 GetPaletteE

11、ntries 获取一个逻辑调色板中一段范围 内的调色板项 Operator HPALETTE 返回HPALETTE句柄 SetPaletteEntries 设置逻辑调色板中一段表项范围 内RGB值和标志 4.2.1 在具体位置和区域中输出文本 4.2.2 利用制表位控制文本输出 4.2.3 设置及文本颜色 4.2 4.2 文本输出文本输出 在输出文本时,需要标识文本的输出位置。文本位置的标识可以 有多种方法,其中最常用的方法是根据坐标或区域来输出文本。在设 备上下文CDC类中提供了TextOut方法用于在指定的坐标处输出文本。 语法格式如下: BOOL TextOut( int x, int

12、y, const CString x:文本位置的x轴坐标。 y:文本位置的y轴坐标。 str:输出的文本信息。 4.2.14.2.1在具体位置和区域中输出文在具体位置和区域中输出文 本本 除了根据坐标或矩形区域输出文本外,CDC类还提供了 TabbedTextOut方法基于制表位控制文本输出。 语法格式如下: CSize TabbedTextOut( int x, int y, const CString x:输出文本起点的x轴坐标。 y:输出文本起点的y轴坐标。 str:输出的文本字符串。 nTabPositions:标识lpnTabStopPositions的元素数量。 lpnTabSto

13、pPositions:制表位数组。 nTabOrigin:x轴从制表位开始扩展的位置,可以与x参数相同,也可 以不同。 如果nTabPositions参数为0,并且lpnTabStopPositions参数为 NULL,则制表符被扩展为平均字符宽度的8倍。 4.2.2 4.2.2 利用制表位控制文本输出利用制表位控制文本输出 在向窗口中输出文本时,通常需要设置文本的字体及文本的显示颜 色。对于设置文本的颜色,只要使用CDC类的SetTextColor方法即可。 该方法需要使用一个RGB值表示文本的颜色,用户可以使用Visual C+ 提供的RGB宏来根据红、绿、蓝颜色确定一个RGB颜色值,如

14、“RGB(255,0,0)”将获得一个红色的RGB颜色值。对于设置文本的字体 属性,其操作略微复杂一些。首先需要定义一个字体对象,即CFont类 对象,然后通过该对象创建一个字体,接着使用CDC类的SelectObject 方法选中新创建的字体,最后输出文本即可。 在程序中,通常使用CFont类的CreateFont方法或CreatePointFont 方法来创建字体。 4.2.3 4.2.3 设置字体及文本颜色设置字体及文本颜色 4.3.1 在设备上下文中绘制图像 4.3.2 从磁盘中记载图像到窗口中 4.3 4.3 图像显示图像显示 在设备上下文中绘制图像可以有多种方法。例如,在4.3.4

15、节中通 过创建一个位图画刷,利用其填充一个区域来实现图像的绘制。此外 ,还可以使用CDC类的位图函数来输出位图到设备上下文中,下面分别 进行介绍。 1 1BitBltBitBlt 该函数用于从源设备中复制位图到目标设备中。 语法格式如下: BOOL BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop ); x:目标矩形区域的左上角x轴坐标点。 y:目标矩形区域的左上角y轴坐标点。 nWidth:在目标设备中绘制位图的宽度。 nHeight:在目标设备中绘制位图的高度

16、。 pSrcDC:源设备上下文对象指针。 xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。 ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。 dwRop:光栅操作代码。 4.3.1 4.3.1 在设备上下文中绘制图像在设备上下文中绘制图像 2 2StretchBltStretchBlt 该函数复制源设备上下文的内容到目标设备上下文中。与BitBlt方法 不同的是,StretchBlt方法能够延伸或收缩位图以适应目标区域的大 小。 语法格式如下: BOOL StretchBlt( int x, int y, int nWidth, int nHeigh

17、t, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop ); x:目标矩形区域的左上角x轴坐标点。 y:目标矩形区域的左上角y轴坐标点。 nWidth:在目标设备中绘制位图的宽度。 nHeight:在目标设备中绘制位图的高度。 pSrcDC:源设备上下文对象指针。 xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。 ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。 nSrcWidth:需要复制的位图宽度。 nSrcHeight:需要复制的位图高度。 d

18、wRop:光栅操作代码。 在开发程序时,通常需要从磁盘中动态加载一幅图像到窗口中。 用户可以使用LoadImage函数来从磁盘加载图像文件。 语法格式如下: HANDLE LoadImage( HINSTANCE hinst, LPCTSTR lpszName, UINT uType, int cxDesired, int cyDesired, UINT fuLoad ); hinst:表示包含图像的实例句柄,可以为NULL。 lpszName:表示图像的资源名称,如果从磁盘中加载,该参数表示图像的名称 ,包含完整路径。 uType:表示加载的图像类型。为IMAGE_BITMAP时,表示加载位图;为 IMAGE_CURSOR时,表示加载鼠标指针;为IMAGE_ICON时,表示加载图标。 cxDesired:表示图标或鼠标指针的宽度,如果加载的是位图,则该参数必须 为0。 cyDesired:表示图标或鼠标指针的高度,如果加载的是位图,则该参数必须 为0。 fu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论