- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6、图形 MFC教学PPT
1、在堆栈中定义一个GDI对象(如CPen、CBrush对象),然后用相应的函数(如CreatePen、CreateSolidBrush)创建此GDI对象。 2、将构造的GDI对象选入当前设备环境中,但不要忘记将原来的GDI对象保存起来。 3、绘图结束后,恢复当前设备环境中原来的GDI对象。 4、由于GDI对象是在堆栈中创建的,当程序结束后,框架会自动删除程序创建的GDI对象。 库存GDI对象 BLACK_BRUSH DKGRAY_BRUSH GRAY_BRUSH HOLLOW_BRUSH LIGRAY_BRUSH NULL_BRUSH WHITE_BRUSH (1)画笔 主要用来绘制各种直线和曲线的一种图形工具。 BOOL CreatePen( int nPenStyle, int nWidth, COLORREF crColor );? (2)画刷 用来进行填充绘图 BOOL CreateBrushIndirect( const LOGBRUSH* lpLogBrush ); (3)位图 CBitmap类封装了Windows的GDI位图操作所需的大部分函数。 BOOL LoadBitmap( UINT nIDResource ); BOOL CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINT nBitcount, const void* lpBits ); GDI位图的显示 1、调用CBitmap类的LoadBitmap函数加载一个适当的位图对象。 2、调用CDC::CreateCompatibleDC函数创建一个内存设备环境,以便位图在内存中保存下来,并与指定设备环境相兼容。 3、调用CDC::SelectObject函数将位图对象选入内存设备环境中。 4、调用CDC::BitBlt或CDC::StretchBlt函数将位图复制到实际设备环境中。 5、使用之后,恢复原来的内存设备环境。 举例: CBitmap m_bmp; m_bmp.LoadBitmap(IDB_BITMAP1); BITMAP bm; m_bmp.GetObject(sizeof(BITMAP),bm); CDC dcMem; dcMem.CreateCompatibleDC(pDC); CBitmap* pOldBmp=dcMem.SelectObject(m_bmp); pDC-BitBlt(0,0,bm.bmWidth,bm.bmHeight,dcMem,0,0,SRCCOPY); dcMem.SelectObject(pOldBmp); TextOut ExtTextOut:如果文本和图形结合紧密,字符间隔不等,并要求有背景颜色或矩形剪裁特性时采用。 TabbedTextOut:如果绘制的文本是一个多列的列表形式时采用。 DrawText:在一个矩形区域内绘制多行文本。 方法一:在栈中构造对象,由析构函数在函数返回时自动触发 void CEgView::OnRButtonUp(UINT nFlags, CPoint point) { CRect rect; CClientDC dc(this); //在栈中构造dc dc.GetClipBox(rect); //dc 自动释放 } 方法二:通过调用ReaseDC函数来释放设备环境 void CEgView::OnRButtonUp(UINT nFlags, CPoint point) { CRect rect; CDC *pDC=GetDC(); //获取一个指向dc的指针 pDC-GetClipBox(rect); ReleaseDC(pDC); //必须调用ReleaseDC删除此对象 } * * MFC图形编程 一、CDC类 MFC的CDC类封装了GDI和DC,于是GDI函数就成了CDC的方法。 CDC类派生了CClientDC CMetaFileDC CPaintDC CWindowDC 等在不同场合下应用的CDC类 打印机 绘图仪 显示器 设备描述环境 GDI CDC DC 例如我们要利用GDI函数画一条从(x1,y1)到(x2,y2)的直线,用MFC可编写下面的程序: CClientDC dc(this); dc.MoveTo(x1,x2); dc.LineTo(x2,y2); 另外,MFC中的CDC类还允许利用CPoint对象作为自变量: CClientDC dc(this); CPoint start
您可能关注的文档
- 4美的基本范畴 海南师范大学 美学 教学课件.ppt
- 4第四章 地球化学调查工作方法 地球化学勘探 教学课件.ppt
- 4讲 包装载体的印制技术及工艺 印刷包装材料学课件.ppt
- 4药品包装常用装置 车间工艺 教学课件.ppt
- 4腹部局解 医科大学局解课件 哈尔滨医科大学局解课件 局部解剖学教学课件.ppt
- 4逻辑运算和选择结构 FORTRAN语言程序设计 教学课件.ppt
- 4镇静催眠药、抗癫病药和抗精神失常药12 药物化学 教学课件.ppt
- 4静定刚架 第三章静定结构内力计算 《建筑力学》教学课件.ppt
- 4静校正地震勘探 教学课件.ppt
- 4风险管理-风险价值度VaR 金融风险管理 第三版的课件.ppt
文档评论(0)