[MFC]GDI+的使用和Matrix的旋转
来源:互联网 发布:邪恶漫画软件大全下载 编辑:程序博客网 时间:2024/06/05 21:55
由于近段时间使用和学习了GDI+和页面旋转,特将查询到资料总结如下。
GDI+介绍
GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。
作为图形设备接口的GDI+使得应用程序开发人员在输出屏幕和打印机信息的时候无需考虑具体显示设备的细节,他们只需调用GDI+库输出的类的一些方法即可完成图形操作,真正的绘图工作由这些方法交给特定的设备驱动程序来完成,GDI+使得图形硬件和应用程序相互隔离.从而使开发人员编写设备无关的应用程序变得非常容易。
一、GDI+使用
1、下载安装GDI+使用到的文件www.codeguru.com/code/legacy/gdi/gdiplus.zip
2、在stdafx.h头文件中包含GDI+使用到的文件和库
#include "GDIPlus\includes\gdiplus.h" ////请修改为你的头文件路径using namespace Gdiplus; #pragma comment(lib, "GDIPlus\\lib\\GdiPlus.lib") ////请修改为你的.lib文件路径//(说明:网上有很多种包含GDI方法,本人觉得使用相对路径会方便些。在源码同一路径下新建文件夹GDIPlus,并将下载的压缩包放至此文件夹中)
3、初始化GDI+环境
1)在构造函数或其他函数增加如下初始代码
GdiplusStartupInput gdiplusStartupInput;GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
我的程序是在view中int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct) 中初始化
2)在虚构函数或其他函数释放资源
GdiplusShutdown(m_gdiplusToken);
4、使用GDI+进行操作(在View OnDraw()函数使用)
1)定义对象
Graphics g(pDC-> m_hDC); g.SetSmoothingMode(SmoothingModeAntiAlias); //属性设置
2)使用Graphics对象来进行绘制
DrawEllipseOverloaded. Draws an ellipse.DrawImageOverloaded. Draws an image.DrawLineOverloaded. Draws a line.DrawLinesOverloaded. Draws a sequence of connected lines.(具体参数和用法参考MSDN即可)
二、Matrix页面旋转
1、定义Matrix对象
Matrix matrix(1.0f,0.0f,0.0f,1.0f,0.0f,0.0f); //参数有意义,不同的参数代表不同意义
2、页面旋转
matrix.RotateAt(90,PointF(wid[0],len[0]),MatrixOrderAppend);//90代表旋转度数matrix.Translate(-len[0],wid[0]-len[0],MatrixOrderAppend);//移动的值根据旋转度数不同,需移动值也不同,具体计算参照下一点的说明
3、页面旋转原理
页面旋转的原理很简单,我个人是这样做的:按照页面右下角坐标为原点(右下角是个人爱好,也可以为其他坐标,方便计算即可),然后再根据旋转后的位置移动在目标位置(这个过程的计算就相对容易)。之前一直苦苦寻找页面旋转点的中心,吃力又不讨好。
三、使用GDI+和Matrix
在前面对GDI+和Matrix的基础上,只需
g->SetTransform(&matrix);
参考资料:
http://blog.csdn.net/huntjap/article/details/240960
http://blog.csdn.net/zhangsongshan/article/details/4789845
http://www.vckbase.com/document/viewdoc/?id=1745
http://www.360doc.com/content/09/0821/11/197414_5104514.shtml
- [MFC]GDI+的使用和Matrix的旋转
- 使用Matrix 显示旋转和缩放后的图片
- 使用GDI+ 绘制可旋转的PNG
- 使用gdi+的Image旋转图片并保存
- 使用GDI+绘制旋转的图形及图片
- 使用GDI+的MFC应用程序的文件打开和保存对话框
- 使用Matrix对bitmap的旋转和镜像水平垂直翻转
- VC6使用GDI+进行图像的特效处理和MFC学习笔记-1
- android使用matrix控制图片的旋转,缩放
- GDI+ 和 GDI的对比
- Matrix控制平移、旋转和缩放的方法
- MFC中使用GDI+绘制自定义的控件
- 使用GDI+编译OCX(MFC)控件的问题
- 关于图形旋转的问题(GDI+)
- 关于图形旋转的问题(GDI+)
- 用GDI绘制旋转的长方体
- GDI+旋转图片的几种方法
- GDI+旋转图片的几种方法
- SQL SERVER性能分析--死锁检测数据库阻塞语句 .
- XEN虚拟CPU管理
- 张孝祥csdn博客
- 编写shell时需要注意空格
- Spfa算法 (模板源代码)
- [MFC]GDI+的使用和Matrix的旋转
- gisergising
- ORACLE导数据
- 实例触发器
- FTP 如何删除<%=GetRobinLink()%>
- log4j logback slf4j项目配置中的简单总结
- 项目管理师,系统分析师,系统架构师
- 在SQL server 2005中一个新的特性——分区表
- char与wchar_t函数对照表