图形设备接口培训课件.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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(

文档评论(0)

jiqinyu2015 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档