《VC++深入详解》第11章 图形的保存和重绘
如何让CDC上输出的文字和图形具有保持功能,集合类CPtrArray的使用,CPaintDC与CClientDC的区别与应用,OnPaint与OnDraw在CView中的关系及实现内幕,滚动窗口的实现,坐标空间、映射方式、设备坐标与逻辑坐标的转换。元文件设备描述表的使用,如何利用兼容DC实现图形的保存和再现。 《VC++深入详解》第11章主要探讨了在Windows编程中如何处理图形的保存、重绘以及坐标空间转换的问题。以下是对章节内容的详细解释: 1. **坐标空间和转换**: - **坐标空间**:在Windows编程中,坐标空间是用于定位二维对象的平面,通常包括世界坐标系空间、页面空间、设备空间和物理设备空间。 - **转换**:转换是将图形从一个坐标空间移动到另一个的过程,涉及缩放、旋转、平移、斜切和反射。Windows使用SetWorldTransform等函数进行这些转换。 - **页面空间到设备空间的转换**:这是Windows接口的默认转换,它根据映射模式调整图形的大小和位置。 - **设备空间到物理设备的转换**:仅限于平移,由Windows窗口管理器控制,确保设备空间的原点映射到正确的位置。 2. **图形的保存和重绘**: - **集合类 CPtrArray**:在MFC中,CPtrArray是一个通用的动态数组类,用于存储指向对象的指针,可应用于图形对象的保存和管理。 - **OnPaint与OnDraw**:OnPaint是Windows消息WM_PAINT的响应函数,用于窗口的重绘;OnDraw是MFC视类提供的函数,专门用于绘制视图内容,两者结合实现图形的持久显示。 3. **窗口滚动功能的实现**: - **CScrollView类**:MFC提供CScrollView类,用于支持窗口的滚动功能,它可以自动处理图形的重新定位,防止滚动时的图形错位。 - **图形错位**:当窗口滚动时,如果不正确处理,可能会导致图形位置混乱。解决方案通常是更新坐标映射和重绘受影响的区域。 4. **元文件**: - **元文件的使用**:元文件可以记录一系列的GDI绘图操作,用于保存和重复播放图形,是实现图形保存和重绘的有效工具。 - **元文件的保存与打开**:通过CreateEnhMetaFile和PlayMetaFile等API函数,可以创建、写入和读取元文件内容。 5. **兼容设备描述表**: - 兼容设备描述表(Compatible Device Context, CDC)用于在不同设备间复制图形,实现图形的保存和重绘。 在VC++编程中,理解并熟练掌握这些概念和技术对于创建具有复杂图形处理能力的应用程序至关重要。例如,当需要在窗口中动态显示或更新图形时,使用OnPaint和OnDraw结合CScrollView可以轻松实现窗口的滚动和图形的正确显示。同时,通过元文件和兼容设备描述表,可以实现图形的保存和恢复,这在创建图形编辑器或者绘图应用程序时非常有用。此外,掌握坐标空间和转换机制,可以精确控制图形在不同分辨率和设备上的呈现效果。
- nenecn2016-11-13比较简单的实例
- 粉丝: 1
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助