大学visual c 案例教程_16791

大学visual c 案例教程_16791

ID:20605156

大小:1.54 MB

页数:36页

时间:2018-10-14

大学visual c  案例教程_16791_第1页
大学visual c  案例教程_16791_第2页
大学visual c  案例教程_16791_第3页
大学visual c  案例教程_16791_第4页
大学visual c  案例教程_16791_第5页
资源描述:

《大学visual c 案例教程_16791》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、大学VisualC++案例教程第三讲 图形设备接口和资源编程西安交通大学计算机教学实验中心http://ctec.xjtu.edu.cn教学目标Windows的图形设备接口MFC的设备环境类和图形对象授课内容3.1设备环境类和图形对象3.2库存图形对象3.3画笔与画刷3.4字体3.5绘图模式3.6GDI坐标系3.7WINDOWS应用程序资源3.8位图3.9菜单3.10图标、快捷键和字符串表3.11工具条与状态条3.12更新命令用户接口消息3.1设备环境类和图形对象设备环境图形设备接口MFC应用程序在硬件上绘图的抽象层次应用程序MFC设备环境类图形设备接口(

2、GDI)设备驱动程序物理设备硬件设备环境在Windows程序中,应用程序的输出并不直接面向物理的设备,如显示屏或打印机,而是针对一个称之为设备环境(DeviceContext)的逻辑设备进行操作,设备环境与实际设备之间的信息传送由Windows直接管理。设备环境类CDC类CPaintDCCClientDCCWindowDCCMetaFileDC图形对象类CGdiObject类CPenCBrushCFontCBitmapCPaletteCRgn3.2库存图形对象virtualCGdiObject*SelectStockObject(intnIndex);nI

3、ndex指定要创建的图形对象图形对象说明BLACK_PEN黑笔NULL_PEN空笔,不画线或边框WHITE_PEN白笔BLACK_BRUSH黑色刷子WHITE_BRUSH白色刷子DKGRAY_BRUSH暗灰刷子GRAY_BRUSH灰色刷子LTGRAY_BRUSH淡灰色刷子NULL_BRUSH空刷子,内部不填充ANSI_FIXED_FONTWindows固定倾角(单间隔)系统字体ANSI_VAR_FONTWindows可变倾角(比例间隔)系统字体DEFAULT_GUI_FONT缺省GUI字体(如菜单和对话框字体)SYSTEM_FONT系统字体不必存储和恢复原

4、来的图形对象【例】用鼠标切换椭圆的图形参数修改文档类的定义(头文件),加入二个变量定义:classCMyDoc:publicCDocument{protected://createfromserializationonlyCMyDoc();DECLARE_DYNCREATE(CMyDoc)//Attributespublic:intm_nColor;CRectm_rectEllipse;//Operationspublic:…(以下省略文档类的其它定义语句)}【例】用鼠标切换椭圆的图形参数(续1)修改文档类的OnNewDocument函数,对变量进行初始化

5、:BOOLCMyDoc::OnNewDocument(){if(!CDocument::OnNewDocument())returnFALSE;//TODO:addreinitializationcodehere//(SDIdocumentswillreusethisdocument)m_rectEllipse=CRect(100,100,300,250);m_nColor=0;returnTRUE;}【例】用鼠标切换椭圆的图形参数(续2)修改视图类的OnDraw函数,加入显示椭圆代码:voidCMyView::OnDraw(CDC*pDC){CMyDoc

6、*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahereswitch(pDoc->m_nColor)//根据颜色变量值决定用不同的画刷{case0:pDC->SelectStockObject(GRAY_BRUSH);break;case1:pDC->SelectStockObject(LTGRAY_BRUSH);break;case2:pDC->SelectStockObject(BLACK_BRUSH);break;}pDC->Ellipse(pDoc->m_r

7、ectEllipse);//画椭圆}【例】用鼠标切换椭圆的图形参数(续3)用ClassWizard建立鼠标左键的消息处理函数,并加入代码voidCMyView::OnLButtonDown(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefaultCMyDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);if(pDoc->m_rectEllipse.PtInRect(point))//判断鼠标是否点在椭圆内{pDoc->m_nCo

8、lor=(pDoc->m_nColor+1)%3;//修改颜色变量

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。