预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

本文由sdhexu贡献 pdf1。 下载 下载 第11章绘 图 位图和图标允许给应用程序添加色彩和风格.因为所有的Windows界面在本 质上都是相同的,实际上,商标和启动窗口是用来区别不同应用程序外观的唯一方法. 显然,绘图对于创建自己的控件,以及在CAD应用程序中显示图形也是重要的.可以 用本章中的例子给他们的应用程序增添一些独特的风格.例53绘制图形讨论一些M FC绘图工具.例54绘制文本讨论怎样绘制文本.例55从任意位置装入一个图标并绘 制例57从文件中创建一个位图讨论从磁盘装入一个图标的方法.讨论从磁盘装入一 个位图的方法.例56从任意位置装入一个位图和绘制一个位图板以及根据需要替换 位图颜色的能力.例58创建一个自绘位图用我们可得的MFC绘图工具在内存中创建一 个位图. 采用位图装入过程控制位图,以包括创建一个位图调色 11.1例53绘制图形 目标绘制一个如图11-1中看到的图形. 图11-1用MFC可以绘制这些图形 策略应用MFC的CDC类的不同绘图工具.步骤在Windows应用程序中绘图用 一个设备环境完成,该设备环境定义用户在哪里绘图,用什么工具绘图以及采用什么绘 图模式;设备环境取消了重复的参数调用,因而有助于简化Windows绘图工具.参见第 4章有关该主题的详细内容. 下载 1.创建一个设备环境 第11章绘 图 199 1)如果处理一个WM_PAINT消息或其他类似的消息,则可以提供一个设备环境,如 果没有提供,则必须自己创建一个;如果要绘制一个屏幕,可以用下面的代码创建一个 设备环境,这里的pWnd是CWnd类的实例的指针.该类的实例应该拥有需要绘制的窗口. CDC*pDC=pWnd-GetDC();> 2)如果创建一个自己的设备环境,用完后必须销毁它;否则,会发生另一种内存泄 漏,称为资源泄漏.销毁一个设备环境,用: pWnd-ReleaseDC(pDC);> 注意调用这些函数的类应控制需要绘制的窗口;如果没有这样的窗口类实例存在 ,可以使用AfxGetMainWnd()-GetDC()或::GetDC(NULL),它将返回一个用桌面窗 口特征>初始化的设备环境.后面的函数返回一个设备环境句柄,在此处使用该返回的 设备环境句柄,必须把它封装到CDC类的实例中.设备环境具有一些预定义的绘图特征 ,其中之一是绘制线条的宽度和颜色,这一特征实际上包含在该设备环境指向的对象中 .该对象叫做画笔(Pen),它默认为绘制一个像素宽的黑色线条;如果需要别的特征 ,则需要创建自己的画笔对象.2.创建一个画笔1)根据画线所需的特征创建CPen类 的一个实例. CPenpen(PS_SOLID,//solidlinealso//PS_DASH,PS_DOT,PS_DASHDOT, //PS_DASHDOTDOT,PS_INSIDEFRAMEand//PS_NULL//widthinpixels//colo r 2,RGB(128,128,128)); 2)让设备环境指向该新画笔对象,但还要保存一个旧画笔的指针,以便以后能恢 复它. Cpen*pPen=pDC->SelectObject(&pen);//saveoldpen 另一个在设备环境中预定义的特征是填充色(用来绘制封闭图形内部的颜色),它 page1 与一个绘制封闭图形的函数一起使用;默认的颜色是白色,但通过告知设备环境使用一 个新的画刷对象,可以改变填充颜色.3.创建一个画刷1)用需要的颜色创建CBru sh类的一个实例. CBrush(RGB(128,128,128);//clolor 2)让设备环境指向该新画刷对象,但还要保存旧对象的指针,以便以后能恢复它 . CBrush*pBrush=pDC->SelectObject(&brush);//saveoldbrush 注意 上面两步代表了创建CPen和CBrush类实例的最基本的方法,有关其他方法参见 第4章和MFC文档.4.用CDC类成员函数绘制图形1)用该设备环境画一条直线, 用: pDC->MoveTo(5,5);pDC->LineTo(25,25); 200 第二部分用户界面实例 下载 一条线的起始和结束坐标分成两个函数调用,以便绘制多条相邻的线条时,具有最 小量的参数进出栈.这里的数字,以及本例中的其余数字,都用逻辑单位;当绘制屏幕时 ,逻辑单位等于屏幕像素.注意本例和本章中的其他例子使用实例调用参数;当然,也 可以使用自己的函数.2)绘制一个矩形,用: pDC->Rectangle(CRect(5,55,50,85)); 3)绘制弧,用: pDC->Arc(CRect(5,115,50,145),CPoint(5,115),CPoint(50,115));//area encompass