第5章 图形与文本输出
程序清单5-21:修改输出界面的鼠标左键双击消息处理函数 void CEx5_2View::OnLButtonDblClk(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default m_flag=1; this->Invalidate(true); CView::OnLButtonDblClk(nFlags, point); }
5. 同样操作在视图类增加鼠标右键双击的消息映射,修改m_flag的值为0,设置无效区域,刷新视图 6. 编译运行程序,在客户区反复双击鼠标的右键和左键,观察窗口的循环变化
实验3:(独立练习)
编写程序Ex5_3,实现如下功能:通过程序菜单项可以将不同颜色的画笔选入当前设备环境中;窗口中单击鼠标左键时,在点击处为圆心,用当前的画笔画一个圆。 操作要求:
1. 使用AppWizard创建一个单文档MFC(EXE程序),在MFC AppWizard-Step 4对话框中,取消对工
具栏、状态栏以及打印和打印预览的支持。
2. 为程序添加菜单项,按要求设置菜单项的属性:在程序主菜单中添加菜单“画笔”,为其增加三个子
菜单项“红画笔”、“绿画笔”和“蓝画笔”。 3. 用ClassWizard为菜单项添加处理函数,编写程序完成指定功能:依次为菜单项“红画笔”、“绿画笔”
和“蓝画笔”添加处理函数,在处理函数中完成以下功能:
(1) 选择菜单项“红画笔“后,将宽度为10个像素、颜色为红色、风格为实线(PS_SOLID)的画笔
选入设备环境
(2) 选择菜单项“绿画笔“后,将宽度为10个像素、颜色为绿色、风格为实线(PS_SOLID)的画笔
选入设备环境
(3) 选择菜单项“蓝画笔“后,将宽度为10个像素、颜色为蓝色、风格为实线(PS_SOLID)的画笔
选入设备环境
(4) 当选择“画笔”菜单中的某一菜单项后,在被选择的菜单项上置选中的标志。程序启动时,默
认菜单项为“红画笔“被选中。
4. 在视图类中编写程序代码,实现在窗口中绘图:在视图类中为单击鼠标左键的事件添加处理函数,
并编写代码用当前画笔,以单击处为中心,画一个半径为50个像素的圆。 5. 编译链接程序,生成可执行文件。
自测题 1.Windows操作系统通过 管理Windows程序的所有图形输出,包括 、 、 。
31
VC++6简明教程
2.应用程序可以使用GDI创建3种类型的图形输出: 、 和 。
3.CDC类封装了所有 ,包含了一个 的创建和初始化,及通用 对象的操作。
4. 是客户区设备上下文,用于客户区的输出,一般在 时要用到该类。 5.绘图前必须准备好设备上下文(DC),在一个MFC应用程序获得DC的常用方法有两种:一种是 ,另一种是 。
小结 1. Windows操作系统通过图形设备接口GDI,管理Windows程序的所有图形输出,包括显示在屏幕上
的窗口,屏幕保护程序的运行,文档的打印。GDI处理连接不同的输出设备,从而应用程序开发者不需要去考虑基础硬件设备之间的不同。
2. 用GDI可以创建3种类型的图形输出:矢量图形、光栅图形和文本。
3. CGdiObject是MFC提供绘图工具的类,它包括画笔(CPen)、画刷(CBrush)、字体(CFont)、位图
(CBitmap)、调色板(CPalette)、区域(CRgn)等。 4. 设备上下文(DC),是由GDI创建用来代表设备连接的数据结构。
5. CDC类封装了所有图形输出函数,包含了一个DC的创建和初始化,以及通用GDI对象的操作。 6. CClientDC是客户区设备上下文类,用于客户区的输出,一般在响应非窗口消息并对客户区绘图时
要用到该类。
7. 视图类包含成员函数OnDraw()函数,CDC指针被传递给OnDraw()函数。
8. WM_PAINT消息是最重要的绘图消息,它要求窗口重新绘制内容。MFC的窗口框架会将该消息映
射到CWnd::OnPaint()函数,OnPaint()函数创建一个DC,并调用视图的OnDraw()函数。 9. 绘图前必须准备好设备上下文(DC),在一个MFC应用程序获得DC的常用方法有两种:一种是接
受一个参数为指向CDC对象的指针,另一种是构造CClientDC对象。
10. 在窗口操作系统中采用32位来表示颜色,MFC和SDK采用COLORREF数据结构表示颜色。 11. 定义颜色的最简单的方法是使用RGB()宏,它采用三个参数,用0-255的值来表示红色、绿色、蓝
色。同样使用宏GetRValue(),GetGValue(),GetBValue()可以从一个COLORREF类型的变量是分离三元色。
12. 为了设置在绘制文本的前景像素时使用的颜色,调用CDC::SetTextColor(),函数定义如下:
COLORREF SetTextColor(COLORREF crColor);
13. 为了设置在绘制文本的背景像素时使用的颜色,调用CDC:SetBkColor(),函数定义如下:
COLORREF SetBkColor(COLORREF crColor);
14. CDC提供了设置文本显示属性的函数:SetBkMode()、GetBkMode()、SetTextAlign()和GetTextAlign()、
SetTextJusttification() 、SetTextCharaterExtra()。
15. 处理字体的最简单的方法是使用GDI的常备字体,如要自己设置显示字体的风格需要创建一个
CFont的对象,具体步骤如下: (1) 定义CFont对象
(2) 调用CreateFont()函数创建字体
(3) 将创建的字体对象选入DC,并保存前一个被选入DC的字体对象 16. CDC类提供了文本测量函数:GetTextExtent()和GetTextMetrics()。
17. CDC提供了以下几个函数用于文本输出:TextOut()、TabbedTextOut()、DrawText()和ExtTextOut()。 18. CDC提供了基本的绘图操作函数如画点,画线,画圆,画矩形,画多边形等等。
32
第5章 图形与文本输出
19. 库存对象是由操作系统维护的用于绘制屏幕的常用对象,包括库存画笔、画刷、字体等。使用
SelectStockObject()可以方便直接选择库存对象修改系统默认值。
20. 逻辑坐标按映像模式可分为三大类:MM_TEXT、固定比例的映射模式、可变比例的映射模式。 21. 设备坐标系统分为三类:工作区(Viewport)坐标系统、窗口(Windows)坐标系统和屏幕(Screen)
坐标系统。
22. 创建CPen的方法有两种:
(1) 定义时直接创建
(2) 定义CPen对象,再调用CreatePen()函数 23. 创建画刷的方法有:
(1) 创建实心画刷CreateSolidBrush()
(2) 创建带阴影的画刷CreateHatchBrush() (3) 创建位图画刷CreatePatternBrush()
33
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库VC++6.0入门第五章 图形和文本输出(7)在线全文阅读。
相关推荐: