- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图形设备接口培训课件
编程步骤: (4)修改视图类的构造函数 (5)修改视图类的OnDraw函数 class CMyView : public CView { int m_nColor; CRect m_rectEllipse; protected: // 仅从序列化创建 CMyView(); ……(以下省略文档类的其他定义语句) public: afx_msg void OnLButtonDown(UINT nFlags, CPoint point); }; CMyView::CMyView() { m_rectEllipse = CRect(100,100,300,250); m_nColor = 0; } void CMyView::OnDraw(CDC* pDC) { switch(m_nColor) {case 0: pDC-SelectStockObject(GRAY_BRUSH); break; case 1: pDC-SelectStockObject(LTGRAY_BRUSH); break; case 2: pDC-SelectStockObject(BLACK_BRUSH); break; } pDC-Ellipse(m_rectEllipse); //画椭圆 } void CMyView::OnLButtonDown(UINT nFlags, CPoint point) { 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)“用Visual C++ 2008集成开发环境开发MFC应用程序”建立单文档应用程序,该项目名称为My,去掉使用Unicode库选项,其余选项采用默认设置。 (2)在项目中的stdafx.h文件的末尾添加下列包含语句。 #include atlimage.h class CMyView : public CView { protected: // 仅从序列化创建 CMyView(); DECLARE_DYNCREATE(CMyView) // 属性 public: CMyDoc* GetDocument() const; private: CImage m_bmpMan; //创建位图对象 int m_nWidth; //位图宽度 int m_nHeight; //位图高度 CRect m_rectMan; //位图矩形区域 int m_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); } void CMyView::OnDraw(CDC*pDC) { int x=m_rectMan.left; int y=m_rectMan.top; m_bmpMan.BitBlt(*pDC,x,y, m_nWidth,m_nHeight,0,0,SRCCOPY); } void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { CRect rectClient; GetClientRect(rectClient); CRect rectOld=m_rectMan; switch(nChar) { case VK_UP: if(m_rectMan.toprectClient.top) m_rectMan+=CSize(0,-m_nStep); break; case VK_DOWN: if(m_rectMan.bottomrectClient.bottom) m_rectMan+=CSize(0,m_nStep); break; case VK_LEFT: if(m_rectMan.leftrectClient.left) m_rectMan+=CSize(
您可能关注的文档
最近下载
- QGDW 11332-2023输电线路掏挖基础机械化施工工艺导则.pdf
- 北京航空航天大学《自动控制原理》历年期末考试复习(部分含答案).pdf
- 一汽大众新迈腾_车型手册电子版下载_非汽车用户车主车辆使用操作驾驶说明书.pdf VIP
- 微观经济学(第九版)英文版配套教材电子课件(完整版).pptx
- 四年级大队委竞选稿.pptx
- 心理健康主题班会 (修正).pptx VIP
- 变电站设计常用电气计算-CT、PT二次容量简易计算.xls VIP
- 人行天桥拆除施工方案.docx VIP
- 《电子测量与仪器》陈尚松版课后答案.doc VIP
- 小学低年级学生读本第4讲我们的中国梦第2课时《伟大的中国梦》教案.docx VIP
文档评论(0)