vc mfc 编程实例4

vc mfc 编程实例4

ID:14629177

大小:79.50 KB

页数:30页

时间:2018-07-29

vc mfc 编程实例4_第1页
vc mfc 编程实例4_第2页
vc mfc 编程实例4_第3页
vc mfc 编程实例4_第4页
vc mfc 编程实例4_第5页
资源描述:

《vc mfc 编程实例4》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VCMFC编程实例4本文由sdhexu贡献pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。下载第4章绘图在前面几章中,Windows为我们做了所有的绘图工作—从绘制一个窗口的非客户区到绘制通用控件.本章将讨论怎样用MFC的CDC类绘制控件和视图,我们将讨论:■Windows和MFC支持的绘图工具类型.■Windows和MFC支持的绘图模式和特性.■两种存储为将来显示用的绘图命令的方法:元文件■怎样在抖动色(dithered(Metafile)和路径(Path).color)和未经抖动色(nonditheredcolor

2、)中绘图.■什么时候Windows绘制它的窗口.4.1设备环境若自己编写一个函数在屏幕上画一条直线,将需要以下类型的调用变量:■直线坐标(起点x,■线条颜色.■线条粗细.y,终点x,y).若要使功能更复杂些,还必须添加:■在(像素,英寸或厘米)中指定进行绘图的度量单位的能力.■在打印机或一个图形文件中绘制直线的能力.为了方便,还希望将直线绘制在任何显示器或者任何打印机上,而不必考虑显示卡或打印机的类型.如果考虑所有这些属性,该函数的结构如下:DrawLine(x1,y1,x2,y2,color,width,device,limits,units)虽然相当

3、直观,但该函数有一个隐含的费用—每当画一条直线,所有这些参数将必须压入堆栈中.同时,该函数也没有保留扩展功能的余地.要添加变量,将必须对旧函数编辑任何引用.因此,怎样才能减少需要的调用变量的数目并预留扩展空间呢?一种方法是写一个包含函数所需的大多数变量的C++类,并将该类作为一个变量进行传输.甚至可以使该类用一些合法的默认值构造自己,以便在特殊场合中使用.Windows使用一个称为设备环境(DeviceContext)的对象的方法—但该对象的创建没有一个C++类,因为Windows早于并存在于C++之外.设备环境对象用一些默认值创建,可以用它们创建默认的

4、设备环境.应用Windows绘制一直线,所需的是一个设备环境对象的指针和直线坐标,设备环境对象的指针叫做设备环境句柄(HDC).::MoveTo(HDChdc,intx,inty);::LineTo(HDChdc,intx,inty);要绘制一个完整的形状,::MoveTo()函数只被调用一次.然后,::LineTo()函数被调用,没有一个多余的变量被压进堆栈(见图4-1).52第一部分基础知识下载①使用设备环境以前设备环境②使用设备环境以后图4-1设备环境减少调用变量的数目并预留扩展空间注意因为设备环境在内存中创建,而内存经常受到扰动,它的地址可能是经

5、常变化的.因此,一个设备环境句柄不是直接指向设备环境对象,而是指向另外一个跟踪设备环境地址的指针.设备无关设备环境是设备无关的,它允许你编写软件而不必指定一个设备.这些软件必须知道的是:它是编写一个设备环境的,而不管该设备环境是屏幕还是Epson打印机.之后,设备环境可以被分配给一个打印机,屏幕,位图或一个文件.4.2在MFC环境中创建一个设备环境MFC用CDC类封装了一个设备环境对象,CDC的成员变量m_hdc指向它所拥有的设备环境,用户可以创建四种类型的设备环境:■屏幕.■打印机.■只有打印机的信息部分.■位图.4.2.1屏幕创建一个屏幕设备环境,可

6、以用:CDC*pDC=GetDC();这里的GetDC()是CWnd类的成员函数,它返回一个允许用户绘制它的窗口客户区的设备环境;如果还希望绘制非客户区,则使用:CDC*pDC=GetWindowDC();如果需要绘制整个屏幕,如编写一个屏幕保护程序或游戏程序时,可能需要对整屏进行绘制,这时使用:下载CDC*pDC=CDC::FromHandle(::GetDC(NULL));第4章绘图53屏幕设备环境来自三种资源之一:私有设备环境,类设备环境和通用设备环境.1.私有设备环境创建窗口时,私有设备环境便创建了,并在窗口存在期间一直存在.要使窗口创建一个私有

7、设备环境,必须在目标窗口的窗口类中设置CS_OWNDC标志,这时GetDC()返回一个私有设备环境的指针,而不创建一个设备环境.在窗口存在期间,为私有设备环境所作的任何变化都被保存.私有设备环境主要在以图形为中心的应用程序中使用,在那里经常地分配一个设备环境,这样会占用非常多的CPU时间.2.类设备环境类设备环境在注册一个窗口类时创建,并在窗口类的存在期间一直存在.要使窗口类创建它自己的类设备环境,必须设置CS_CLASSDC标志,GetDC()只返回指向该类设备环境的指针.此外,在窗口类的存在期间,设备环境一直保留它的值.然而,在第1章中已提及,必须注

8、意不要让两个由相同的窗口类创建的窗口在同一时间绘图;还应注意Microsoft认

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

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

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