欢迎来到天天文库
浏览记录
ID:45135270
大小:510.00 KB
页数:38页
时间:2019-11-10
《第08章绘图、字体和位图》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第8章绘图、字体和位图8.1概述8.2简单图形的绘制8.3字体与文字处理8.4位图、图标与光标8.1概述8.1.1设备环境类(1)CPaintDCCPaintDC类的构造函数会自动调用BeginPaint,而它的析构函数则会自动调用EndPaint。(2)CClientDC和CWindowDCCWindowDC和CClientDC构造函数分别调用GetWindowDC和GetDC,但它们的析构函数都是调用ReleaseDC函数。(3)CMetaFileDCCMetaFileDC封装了在一个Window
2、s图元文件中绘图的方法。8.1.1坐标映射为了能保证打印的结果不受设备的影响,Windows定义了一些映射模式,这些映射模式决定了设备坐标和逻辑坐标之间的关系。它们是:MM_TEXT每个逻辑单位等于一个设备像素,x向右为正,y向下为正MM_HIENGLISH每个逻辑单位为0.001英寸,x向右为正,y向上为正MM_HIMETRIC每个逻辑单位为0.01毫米,x向右为正,y向上为正MM_ANISOTROPICx,y可变比例MM_ISOTROPICx,y等比例MM_LOENGLISH每个逻辑单位为0.01
3、英寸,x向右为正,y向上为正MM_LOMETRIC每个逻辑单位为0.1毫米,x向右为正,y向上为正MM_TWIPS每个逻辑单位为一个点的1/20(一个点是1/72英寸),x向右为正,y向上为正。8.1概述在MM_ISOTROPIC映射模式下,纵横比总是1:1,换句话说,无论比例因子如何变化,圆总是圆的;但在MM_ANISOTROPIC映射模式下,x和y的比例因子可以独立地变化,即圆可以被拉扁成椭圆形状。将一个椭圆绘制在视窗中央,且当视图的大小发生改变时,椭圆的形状也会随之改变:voidCMyView:
4、:OnDraw(CDC*pDC){CRectrectClient;GetClientRect(rectClient);//获得当前窗口的客户区大小pDC->SetMapMode(MM_ANISOTROPIC);//设置MM_ANISOTROPIC映射模式pDC->SetWindowExt(1000,1000);//设置窗口范围pDC->SetViewportExt(rectClient.right,-rectClient.bottom);//设置视口范围pDC->SetViewportOrg(rect
5、Client.right/2,rectClient.bottom/2);//设置视口原点pDC->Ellipse(CRect(-500,-500,500,500));}8.1.3图形设备接口1.使用GDI对象在选择GDI对象进行绘图时,往往遵循着下列的步骤:(1)在堆栈中定义一个GDI对象(如CPen、CBrush对象),然后用相应的函数(如CreatePen、CreateSolidBrush)创建此GDI对象。8.1概述(2)将构造的GDI对象选入当前设备环境中,但不要忘记将原来的GDI对象保存起来
6、。(3)绘图结束后,恢复当前设备环境中原来的GDI对象。(4)由于GDI对象是在堆栈中创建中,当程序结束后,框架会自动删除程序创建的GDI对象。具体操作可像下面的代码过程:voidCMyView::OnDraw(CDC*pDC){CPenpenBlack;//定义一个画笔变量penBlack.CreatePen(PS_SOLID,2,RGB(0,0,0));//创建画笔//将此画笔选入当前设备环境并保存原来的画笔CPen*pOldPen=pDC->SelectObject(&penBlack);//用
7、此画笔绘图pDC->MoveTo(...);pDC->LineTo(...);pDC->SelectObject(pOldPen);//恢复设备环境中原来的画笔}2.库存的GDI对象Windows包含了一些库存的可以利用的GDI对象。CDC的成员函数SelectStockObject可以把一个库存对象选入当前设备环境中,并返回原先被选中的对象指针,同时使原先被选中的对象从设备环境中分离出来。如下面的代码:8.1概述voidCMyView::OnDraw(CDC*pDC){CPennewPen(PS_S
8、OLID,2,RGB(0,0,0)))pDC->SelectObject(&newPen);pDC->MoveTo(...);pDC->LineTo(...);pDC->SelectStockObject(BLACK_PEN);//newPen被分离出来}函数SelectStockObject可选用的库存GDI对象类型可以是下列值之一:BLACK_BRUSH黑色画刷DKGRAY_BRUSH深灰色画刷GRAY_BRUSH灰色画刷HOLLOW_BRUSH中空
此文档下载收益归作者所有