MFC-Windows应用程序设计-第4章-图形

上传人:go****e 文档编号:129044288 上传时间:2020-04-22 格式:PPT 页数:40 大小:181.52KB
返回 下载 相关 举报
MFC-Windows应用程序设计-第4章-图形_第1页
第1页 / 共40页
MFC-Windows应用程序设计-第4章-图形_第2页
第2页 / 共40页
MFC-Windows应用程序设计-第4章-图形_第3页
第3页 / 共40页
MFC-Windows应用程序设计-第4章-图形_第4页
第4页 / 共40页
MFC-Windows应用程序设计-第4章-图形_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《MFC-Windows应用程序设计-第4章-图形》由会员分享,可在线阅读,更多相关《MFC-Windows应用程序设计-第4章-图形(40页珍藏版)》请在金锄头文库上搜索。

1、MFCWindows应用程序设计 第4章图形 4 1DC和GDI 4 1 1设备描述环境DC DeviceContext DC 在Windows中 表现为一个叫做图形设备描述表的数据结构 它描述虚拟图形设备的属性 所以也叫做图形设备描述环境 应用程序 图形设备描述环境 设备驱动程序 物理图形显示设备 图4 1图形设备描述表的基本概念 4 1DC和GDI 4 1 2Windows的GDIGDI 图形设备接口 绘图相关操作的函数集合 4 1DC和GDI 表4 1GDI中的绘图工具及其对应MFC类 4 2CDC类 4 2 1CDC类及其派生类CDC类封装了绘图所需要的所有成员函数 以及各种类型的Wi

2、ndows图形设备描述环境的全部功能 图4 2MFC设备描述环境类层次结构 OnDraw 窗口用户区域 整个窗口 图元文件 WM PAINT 4 2CDC类 1 画线BOOLLineTo intx inty BOOLLineTo POINTpoint LineTo从当前位置画直线到参数指定位置 CPointMoveTo intx inty CPointMoveTo POINTpoint MoveTo从当前位置把画笔移到参数指定位置 4 2 2CDC类中常用成员函数 4 2CDC类 2 矩形和圆角矩形BOOLRectangle intx1 inty1 intx2 inty2 BOOLRectan

3、gle LPCRECTlpRect BOOLRoundRect intx1 inty1 intx2 inty2 intx3 inty3 BOOLRoundRect LPCRECTlpRect POINTpoint 4 2 2CDC类中常用成员函数 4 2CDC类 3 椭圆和圆弧BOOLEllipse intx1 inty1 intx2 inty2 BOOLEllipse LPCRECTlpRect BOOLArc intx1 inty1 intx2 inty2 intx3 inty3 intx4 inty4 BOOLArc LPCRECTlpRect POINTptStart POINTptE

4、nd 4 2 1CDC类中常用成员函数 4 2CDC类 练习 1 用鼠标控制直线 矩形 椭圆的绘制 4 2 1CDC类中常用成员函数 2 用鼠标控制绘制任意多边形 提示以直线为例 将左键按下时坐标点作为直线开始点 左键弹起作为直线终点 在左键弹起消息处理函数里绘制直线 提示鼠标第一次左键按下的点作为多边形的开始点 保存开始点 以后每一次左键弹起的点作为多边形的一个顶点 直到左键弹起点和开始的位置接近结束 也可以利用CDC类中绘制多边形的函数来完成 4 2CDC类 4 2 1CDC类中常用成员函数 作业 用鼠标控制任意线的绘制 作业本 P1104 1 4 2 4 3 4 4 请查看MFC帮助文件

5、 找出绘制点 饼形图函数 尝试绘制相应图形 4 2CDC类 4 点COLORREFSetPixel intx inty COLORREFcolor COLORREFSetPixel POINTpoint COLORREFcolor COLORREFGetPixel intx inty COLORREFGetPixel POINTpoint 4 2 1CDC类中常用成员函数 COLORREFRGB BYTEbRed BYTEbGreen BYTEbBlue bRed bGreen bBlue 取值0 255 4 2CDC类 5 位图函数BOOLBitBlt intx inty intnWidth

6、 intnHeight CDC pSrcDC intxSrc intySrc DWORDdwRop BitBlt 把一个DC中的位图复制到另一个DC中 4 2 1CDC类中常用成员函数 dwRop 指定光栅操作 光栅操作模式说明了GDI是如何组合输出操作中的颜色 包括当前画刷 可能的源位图和目标位图 可以为下列值之一 如表4 2 表4 2dwRop取值 续表4 2dwRop取值 4 2CDC类 5 位图函数BOOLStretchBlt intx inty intnWidth intnHeight CDC pSrcDC intxSrc intySrc intnSrcWidth intnSrcHe

7、ight DWORDdwRop StretchBlt 把一个DC中的位图复制到另一个DC中 但可以改变位图的长宽比 4 2 1CDC类中常用成员函数 练习 尝试做出放大镜功能效果 4 2CDC类 6 绘图工具选入绘图环境函数CGdiObject SelectStockObject intnIndex SelectStockObject 将指定的库存绘图工具选入绘图环境CPen SelectObject CPen pPen SelectObject 将指定的绘图工具选入绘图环境 4 2 1CDC类中常用成员函数 4 3CPen类 1 库存画笔利用SelectStockObject将库存画笔选入绘

8、图环境 CGdiObject SelectStockObject intnIndex 表4 2库存画笔 4 3CPen类 2 自定义画笔 CPen类CPen intstyle intwidth COLORREFcolor style 画笔样式width 画笔宽度 表4 3画笔样式 4 3CPen类 2 自定义画笔CPen intstyle intwidth COLORREFcolor color 设置画笔颜色 用RGB值来描述 通过SelectObject将自定义画笔选入绘图环境 CPen SelectObject CPen pPen 4 3CPen类 2 自定义画笔BOOLCPen Crea

9、tePen intstyle intwidth COLORREFcolor 4 3CPen类 练习 进一步完善鼠标控制直线的绘制 作业 P1104 7 练习 尝试画图软件中的取色吸管功能 4 4CBrush类 1 库存画刷BLACK BRUSH黑色画刷DKGRAY BRUSH深灰色画刷GRAY BRUSH灰色画刷HOLLOW BRUSH中空画刷LTGRAY BRUSH浅灰色画刷NULL BRUSH空画刷WHITE BRUSH白色画刷利用SelectStockObject将库存画刷选入绘图环境 4 4CBrush类 2 自定义画刷CBrush COLORREFcrColor CBrush int

10、nIndex COLORREFcrColor CBrush CBitmap pBitmap 4 5绘图模式 intSetROP2 intnDrawMode nDrawMode 为绘图模式 可以取如下值 R2 BLACK像素始终为黑色 R2 WHITE像素始终为白色 R2 NOP像素保持不变 R2 NOT像素为屏幕颜色的反色 R2 COPYPEN像素为笔的颜色 R2 NOTCOPYPEN像素为笔颜色的反色 R2 MERGEPENNOT像素为笔颜色或者屏幕颜色反色的组合色 R2 MASKPENNOT像素为笔颜色与屏幕颜色反色的组合色 4 5绘图模式 intSetROP2 intnDrawMode

11、nDrawMode 为绘图模式 可以去如下值 R2 MERGENOTPEN像素为笔颜色反色或者屏幕颜色的组合色 R2 MASKNOTPEN像素为笔颜色反色与屏幕颜色的组合色 R2 MERGEPEN像素为笔颜色或者屏幕颜色的组合色 R2 NOTMERGEPENR2 MERGEPEN的反色 R2 MASKPEN像素为笔颜色与屏幕颜色的组合色 R2 NOTMASKPENR2 MASKPEN的反色 R2 XORPEN像素为笔颜色与或者屏幕颜色异或的颜色 R2 NOTXORPENR2 XORPEN的反色 4 6文本和CFont类 4 6 1显示文本1 文本的显示BOOLTextOut intx inty

12、 constCString 4 6文本和CFont类 4 6 1显示文本3 设置文本字符的间距intSetTextCharacterExtra intnCharExtra intGetTextCharacterExtra 4 6文本和CFont类 4 6 1显示文本4 设置文本的对齐方式UINTSetTextAlign UINTnFlags UINTGetTextAlign nFlags可以取值TA BASELINETA BOTTOMTA CENTERTA LEFTTA NOUPDATECTA RIGHTTA TOPTA UPDATECP 4 6文本和CFont类 4 6 2字体和CFont类

13、 typedefstructtagLOGFONT LONGlfHeight 字体的逻辑高度LONGlfWidth 字符的平均逻辑宽度LONGlfEscapement 倾角LONGlfOrientation 书写方向LONGlfWeight 字体的粗细程度BYTElfItalic 斜体标志BYTElfUnderline 下划线标志BYTElfStrikeOut 删除线标志BYTElfCharSet 字符集 汉字必须为GB2312 CHARSETTCHARlfFaceName LF FACESIZE 字样名称 LOGFONT 4 6文本和CFont类 1 获取字体信息BOOLGetTextMetr

14、ics LPTEXTMETRIClpMetric const 4 6 2字体和CFont类 4 6文本和CFont类 2 字体的创建和CFont类BOOLCreateFont intnHeight intnWidth intnEscapenment intnOrientation intnWeight BYTEbItalic BYTEbUnderline BYTEcStrikeOut BYTEnCharset BYTEnOutPrecision BYTEnClipPrecision BYTEnQuality BYTEnPitchAndFamily LPCTSTRlpszFacename 4 6

15、 2字体和CFont类 4 6文本和CFont类 3 使用预存的字体 4 6 2字体和CFont类 4 7CDC的其他派生类 1 窗口框架的设备描述环境 CWindowDC 4 7CDC的其他派生类 2 图元文件设备描述环境 CWindowDC 7 2图形设备接口 1 CBitmap类CBitmap类封装了Windows的GDI位图操作所需的大部分函数 其中 LoadBitmap是位图的初始化函数 其函数原型如下 BOOLLoadBitmap LPCTSTRlpszResourceName BOOLLoadBitmap UINTnIDResource 该函数从应用程序中调入一个位图资源 由nI

16、DResource或lpszResourceName指定 若用户直接创建一个位图对象 可使用CBitmap类中的CreateBitmap CreateBitmapIndirect以及CreateCompatibleBitmap函数 其原型如下 BOOLCreateBitmap intnWidth intnHeight UINTnPlanes UINTnBitcount constvoid lpBits 该函数用指定的宽度 nWidth 高度 nHeight 和位模式创建一个位图对象 其中 参数nPlanes表示位图的颜色位面的数目 nBitcount表示每个像素的颜色位个数 lpBits表示包含位值的短整型数组 若此数组为NULL 则位图对象还未初始化 BOOLCreateBitmapIndirect LPBITMAPlpBitmap 该函数直接用BITMAP结构来创建一个位图对象 BOOLCreateCompatibleBitmap CDC pDC intnWidth intnHeight 该函数为某设备环境创建一个指定的宽度 nWidth 和高度 nHeight 的位图对象 7 4

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号