第08章绘图、字体和位图

第08章绘图、字体和位图

ID:45135270

大小:510.00 KB

页数:38页

时间:2019-11-10

第08章绘图、字体和位图_第1页
第08章绘图、字体和位图_第2页
第08章绘图、字体和位图_第3页
第08章绘图、字体和位图_第4页
第08章绘图、字体和位图_第5页
资源描述:

《第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中空

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。