资源描述:
《第5章 图形与文本输出ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章 图形和文本输出图形设备接口CGdiObject对象CDC文本处理绘图处理图形设备接口GDI(graphicsdeviceinterface)矢量图形创建线和填充图形光栅图形位图文本输出以逻辑坐标为单位计算文本输出位置绘图工具GDI对象-GdiObjectCGdiObject是一个抽象类,该类不能直接定义对象。必须使用它的派生类设备上下文DCdevicecontextGDI创建用来代表设备连接的数据结构主要功能:允许应用程序使用一个输出设备提供窗口应用程序,设备驱动,和输出设备之间的连接保存当前信息,例如在一个窗口内绘图使用的颜色,画笔的宽度、画刷的类型等等保存窗口剪取
2、区域(clippingregion),限制程序输出到输出设备中窗口覆盖的区域设备上下文类-CDCCObjectCDCCClientDCCMetaFileDCCPanitDCCWindowDCOnDraw函数voidCMyView::OnDraw(CDC*pDC){CMyDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedataherepDC->TextOut(1,1,”helloworld!”);}WM_PAINT消息产生WM_PAINT消息的场合通常有窗口移动后及最大化,最小化后的刷新。被
3、覆盖区域的刷新,如下拉菜单覆盖的区域。无效区域产生后的刷新,如执行滚动条操作,将一区域移动至不可见。WM_PAINT消息人为地生成一个绘制消息,重绘窗口的方法:Invalidate(true);CRectrect(1,1,300,300);InvalidateRect(&Rect,true);获取设备上下文的方法接受一个参数为指向CDC对象的指针voidCMyView::OnDraw(CDC*pDC);构造CClientDC对象CClientDCdc(this);接受一个参数为指向CDC对象的指针voidCMyView::OnDraw(CDC*pDC){CMyDoc*pDoc=
4、GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahere//在坐标为10,10的位置上画一点,颜色黑色pDC->SetPixel(CPoint(10,10),RGB(0,0,0));}参数为指向CDC对象的指针构造CClientDC对象构造CClientDC对象VoidCMyView::OnLButtonDown(UNITnFlags,CPointpoint){//TODO:adddrawcodefornativedatahereCClientDCdc(this);//this指针将CMyView赋
5、值给创建的dc对象dc.SetPixel(point,RGB(255,0,0));CView::OnLButtonDown(nFlags,point);}任务1编写一个单文档MFC(EXE)程序,在视图类增加成员变量,追踪鼠标的左键双击位置的坐标,并输出详见例5-1处理文本设置文本颜色设置文本显示属性设置字体格式化文本文本输出函数图形和文本并没有明显的界限设置文本颜色COLORREFSetTextColor(COLORREFcrColor);COLORREFSetBkColor(COLORREFcrColor);颜色的表示//基本三元色COLORREFcrRed=RGB(255
6、,0,0);COLORREFcrGreen=RGB(0,255,0);COLORREFcrBlue=RGB(0,0,255)//16-color设备支持颜色constCOLORREFg_crBlack=RGB(0,0,0);constCOLORREFg_crYellow=RGB(255,255,0);constCOLORREFg_crDkYellow=RGB(128,128,0);constCOLORREFg_crRed=RGB(255,0,0);constCOLORREFg_crDkRed=RGB(128,0,0);constCOLORREFg_crMagenta=RGB(2
7、55,0,255);constCOLORREFg_crDkMagenta=RGB(128,0,128);constCOLORREFg_crBlue=RGB(0,0,255);constCOLORREFg_crDkBlue=RGB(0,0,128);voidCMyView::OnDraw(CDC*pDC){CMyDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);pDC->SetTextColor(RGB(255,0,0));pDC->SetBkColor(RG