




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualC 程序设计 杨琦计算机教学实验中心西安交通大学 第3章图形设备接口 授课内容 3 1图形设备接口的基本概念3 2绘图工具类3 3画笔与画刷3 4位图3 5字体3 6绘图模式3 7库存图形对象3 8典型案例 3 1设备环境类和图形对象 图形设备接口GDI GraphicsDeviceInterface GDI 设备环境类 CPaintDC CWindowDC等 3 2绘图工具类 CGdiObject类的常用成员函数 3 3画笔与画刷 CPen类 BOOLCPen CreatePen intnPenStyle intnWidth COLORREFcrColor 第1个参数是画笔样式 可取PS SOLID创建实线笔PS DASH创建由短线构成的虚线PS DOT创建由点构成的虚线PS DASHDOT创建由短线和点构成的虚线PS DASHDOTDOT由短线 点 点构成的虚线PS NULL创建空 空白 画笔 CDC SelectObject函数原型 CPen SelectObject CPen pPen CBrush SelectObject CBrush pBrush CFont SelectObject CFont pFont CPen类 CPen类 voidCMyView OnDraw CDC pDC CPenpenMountain pOldpen penMountain CreatePen PS SOLID 3 RGB 125 50 0 pOldpen pDC SelectObject CBrush类 BOOLCreateSolidBrush COLORREFcrColor BOOLCreateHatchBrush intnIndex COLORREFcrColor 效果图 例3 1 绘制蓝天 草地和大山 voidCMyView OnDraw CDC pDC CBrush pOldBrush brushSky brushGrass brushMoutain CRectrect GetClientRect brushMoutain CreateSolidBrush RGB 125 50 0 pDC SelectObject 使用CImage显示图片 1 在项目中的stdafx h文件加入 include 2 视图类CImagem imgBody 3 CA09View CA09View m imgBody Load vc bmp 4 voidCA09View OnDraw CDC pDC if m imgBody IsNull return else intw m imgBody GetWidth inth m imgBody GetHeight m imgBody Draw pDC 0 0 w h 1 在项目中的stdafx h文件的末尾添加下列包含语句 include 2 修改视图类的定义 头文件 加入一个变量定义 classCMyView publicCView protected 仅从序列化创建CMyView DECLARE DYNCREATE CMyView 属性public CMyDoc GetDocument const CImagem imgBody 以下省略其它定义语句 CMyView CMyView m imgBody Load vc jpg voidCMyView OnDraw CDC pDC 显示图像intnWidth m imgBody GetWidth intnHeight m imgBody GetHeight m imgBody BitBlt pDC 0 0 nWidth nHeight 0 0 SRCCOPY BOOLStretchBlt HDChDestDC intxDest intyDest intnDestWidth intnDestHeight intxSrc intySrc intnSrcWidth intnSrcHeight DWORDdwROP SRCCOPY BOOLBitBlt HDChDestDC intxDest intyDest intnDestWidth intnDestHeight intxSrc intySrc DWORDdwROP SRCCOPY 例3 2 直接显示一张位图文件 classCMyView publicCView protected 仅从序列化创建CMyView DECLARE DYNCREATE CMyView 属性public CMyDoc GetDocument const 定义CBitmap类对象以及位图的高度和宽度变量CBitmapm Bitmap intm nHeight intm nWidth 以下省略其它定义语句 CMyView CMyView HBITMAPhBitmap HBITMAP LoadImage NULL vc bmp IMAGE BITMAP 0 0 LR LOADFROMFILE m Bitmap Attach hBitmap BITMAPBM m Bitmap GetBitmap voidCMyView OnDraw CDC pDC 显示位图CDCMemDC MemDC CreateCompatibleDC NULL MemDC SelectObject 3 5字体CFont类的常用成员函数 3 4字体 BOOLCreateFont intnHeight 字符逻辑高度intnWidth 字体逻辑宽度intnEscapement 出口矢量与X轴的角度intnOrientation 字符基线与X轴的角度intnWeight 字体磅值BYTEbItalic 非0则为斜体BYTEbUnderline 非0则加下划线BYTEcStrikeOut 非0则加删除线BYTEnCharSet 此字体的字符集BYTEnOutPrecision 输出精度BYTEnClipPrecision 裁剪精度BYTEnQuality 输出质量BYTEnPitchAndFamily 调距和字体族LPCTSTRlpszFacename 字体的字型名 显示字体 CFont pOldFont font font CreateFont 50 0 0 0 FW NORMAL FALSE FALSE 0 GB2312 CHARSET OUT DEFAULT PRECIS CLIP DEFAULT PRECIS DEFAULT QUALITY DEFAULT PITCH 楷体 创建字体对象pOldFont pDC SelectObject 3 6绘图模式 intSetROP2 intnDrawMode 思考题 在例3 1中添加如下代码 效果如何 pDC SetROP2 R2 BLACK 或者 pDC SetROP2 R2 XORPEN 3 7库存图形对象 virtualCGdiObject SelectStockObject intnIndex 例3 4鼠标切换椭圆的图形 classCMyView publicCView intm nColor CRectm rectEllipse protected 仅从序列化创建CMyView 以下省略文档类的其他定义语句 public afx msgvoidOnLButtonDown UINTnFlags CPointpoint CMyView CMyView m rectEllipse CRect 100 100 300 250 m nColor 0 voidCMyView OnDraw CDC pDC switch m nColor case0 pDC SelectStockObject GRAY BRUSH break case1 pDC SelectStockObject LTGRAY BRUSH break case2 pDC SelectStockObject BLACK BRUSH break pDC Ellipse m rectEllipse 画椭圆 voidCMyView OnLButtonDown UINTnFlags CPointpoint if m rectEllipse PtInRect point m nColor m nColor 1 3 InvalidateRect m rectEllipse CView OnLButtonDown nFlags point 3 8典型案例 例3 5 编写爆破人移动程序 例3 6 编写程序 模仿炸弹爆炸动画 例3 5 编写爆破人移动程序 编程步骤 1 用VisualC 2008集成开发环境开发MFC应用程序 建立单文档应用程序 该项目名称为My 去掉使用Unicode库选项 其余选项采用默认设置 2 在项目中的stdafx h文件的末尾添加下列包含语句 include classCMyView publicCView protected 仅从序列化创建CMyView DECLARE DYNCREATE CMyView 属性public CMyDoc GetDocument const private CImagem bmpMan 创建位图对象intm nWidth 位图宽度intm nHeight 位图高度CRectm rectMan 位图矩形区域intm nStep 人每次走过的像素点 以下省略文档类的其他定义语句 CMyView CMyView m nStep 10 m bmpMan Load Man bmp m nWidth m bmpMan GetWidth m nHeight m bmpMan GetHeight m rectMan CRect 100 100 100 m nWidth 100 m nHeight 4 修改视图类的构造函数 voidCMyView OnDraw CDC pDC intx m rectMan left inty m rectMan top m bmpMan BitBlt pDC x y m nWidth m nHeight 0 0 SRCCOPY 5 修改视图类的OnDraw函数 voidCMyView OnKeyDown UINTnChar UINTnRepCnt UINTnFlags CRectrectClient GetClientRect 例3 6 模仿炸弹爆炸动画 classCMyView publicCView protected 仅从序列化创建CMyView DECLARE DYNCREATE CMyView 属性public CMyDoc GetDocument const CImagem bmpExplode 创建位图对象intm nWidth 位图宽度intm nHeight 位图高度CRectm rectExplode 位图对象的大小intm nState 爆炸状态标记 以下省略文档类的其他定义语句 CMyView CMyView m nState 0 m bmpExplode Load explosion bmp m nWidth m bmpExplode GetWidth 15 m nHeight m bmpExplode GetHeight m rectExplode CRect 0 0 m nWidth m nHeight voidCMyView OnDraw CDC pDC if m nState 0 intx m rectExplode left inty m rectExplode top m bmpExplode BitBlt pDC x y m nWidth m nHeight m nWidth m nState 1 0 SRCCOPY voidCMyView On
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实训室教育培训
- 福建省福州市鼓楼区延安中学2026届英语九年级第一学期期末考试试题含解析
- 印刷企业岗前培训
- 社区保密文件培训
- 湖南长沙市长郡教育集团2026届英语九上期末质量跟踪监视试题含解析
- 2026届四川省重点中学化学九上期末联考试题含解析
- 江苏省常熟市第一中学2026届九年级化学第一学期期中达标检测试题含解析
- 安徽省安庆市太湖县2026届英语九年级第一学期期末达标测试试题含解析
- 2026届吉林省重点中学九年级化学第一学期期中检测试题含解析
- 金融分析师考试题库及答案解析
- 制药企业GMP生产质量管理培训资料
- 4.1.2+无理数指数幂及其运算性质课件-2025-2026学年高一上学期数学人教A版必修第一册
- 工程用工实名管理方案(3篇)
- 2025兴业银行福建总行国际业务部交易银行部招聘若干人备考考试题库附答案解析
- 1.3 几和第几(课件)数学苏教版一年级上册(新教材)
- 食品卫生消防安全应急预案
- 1.3加与减①(课件)数学沪教版二年级上册(新教材)
- 2025至2030中国HPV相关疾病行业项目调研及市场前景预测评估报告
- 无领导小组讨论的经典面试题目及答案解析
- 许昌襄城县特招医学院校毕业生招聘笔试真题2024
- (2025秋新版)苏教版三年级数学上册全册教案
评论
0/150
提交评论