GDI+ C++实现函数曲线图
2012-02-13 14:27
260 查看
Windows GDI(Graphics Device Interface,图形装置界面),这是Windows操作系统的一个图形包,用于支持Windows操作系统中的图形界面,它也帮助开发人员在不考虑特定设备细节的情形下在计算机上进行绘图操作。
随着开发技术的进步,GDI从某种意义上已经不能满足需求,于是微软把GDI进一步封装抽象,形成新的GDI+,并在性能和功能上进一步完善。GDI+构成了Windows XP操作系统及其后续版本的子系统的应用程序编程接口(API)。GDI+负责在屏幕和打印机上显示信息,它是GDI的改进,同时也是.NET框架结构的重要组成部分。和GDI一样,它提供了对二维图形图像和文字排版处理的支持,通过GDI+能够创建与设备无关的应用程序。使用GDI+可以创建图形、绘制文本以及将图形图像作为对象来操作,旨在提高性能和易用性。
利用GDI+绘制函数曲线时必须首先知道的是逻辑窗口的原点在物理坐标中的位置和逻辑像素与物理坐标单位(或设备像素)之间的比例关系(映射)。GDI+在坐标系中绘制直线、矩形和其他形状,默认坐标系的原点是左上角,并且X轴指向右边,Y轴指向下边。默认坐标系的度量单位是像素。
绘图常用到的类库:
绘制函数曲线的算法思想很简单,其实就是根据该指定的函数表达式精确地计算出各个点,并对每两个点进行DrawLine(Mypen,Point1,Ponit2)操作,以物理坐标的原点为起点,设定每两个点的间隔(我取0.001,测试过发现该精确度已足够),分正负轴进行绘制。
下面是对绘制函数框的背景的绘制,包括网格,X,Y轴以及对原点的标记
有关画笔字体笔刷之类的定义声明就不再罗嗦了,搞得跟教程一样囧,下面直接贴代码...
下面是绘制函数y=sinx*x的代码
有关像素点的值由于本人刚接触GDI+绘图,只能是在窗口下挨个数值带入代码进行操作测试找对应比例值囧,其实绘制函数曲线最关键的就是找到合适的逻辑坐标与物理坐标的映射关系,其他的诸如生成n多点描绘连线之类的估计地球人都会,呵呵~
生成函数y=sinx*x图像:
对图像进行缩小后->
放大缩小的原理其实很简单,只要在之前的逻辑物理映射关系式中加入zoom为缩放系数即可。
随着开发技术的进步,GDI从某种意义上已经不能满足需求,于是微软把GDI进一步封装抽象,形成新的GDI+,并在性能和功能上进一步完善。GDI+构成了Windows XP操作系统及其后续版本的子系统的应用程序编程接口(API)。GDI+负责在屏幕和打印机上显示信息,它是GDI的改进,同时也是.NET框架结构的重要组成部分。和GDI一样,它提供了对二维图形图像和文字排版处理的支持,通过GDI+能够创建与设备无关的应用程序。使用GDI+可以创建图形、绘制文本以及将图形图像作为对象来操作,旨在提高性能和易用性。
利用GDI+绘制函数曲线时必须首先知道的是逻辑窗口的原点在物理坐标中的位置和逻辑像素与物理坐标单位(或设备像素)之间的比例关系(映射)。GDI+在坐标系中绘制直线、矩形和其他形状,默认坐标系的原点是左上角,并且X轴指向右边,Y轴指向下边。默认坐标系的度量单位是像素。
绘图常用到的类库:
绘制函数曲线的算法思想很简单,其实就是根据该指定的函数表达式精确地计算出各个点,并对每两个点进行DrawLine(Mypen,Point1,Ponit2)操作,以物理坐标的原点为起点,设定每两个点的间隔(我取0.001,测试过发现该精确度已足够),分正负轴进行绘制。
下面是对绘制函数框的背景的绘制,包括网格,X,Y轴以及对原点的标记
有关画笔字体笔刷之类的定义声明就不再罗嗦了,搞得跟教程一样囧,下面直接贴代码...
下面是绘制函数y=sinx*x的代码
有关像素点的值由于本人刚接触GDI+绘图,只能是在窗口下挨个数值带入代码进行操作测试找对应比例值囧,其实绘制函数曲线最关键的就是找到合适的逻辑坐标与物理坐标的映射关系,其他的诸如生成n多点描绘连线之类的估计地球人都会,呵呵~
生成函数y=sinx*x图像:
对图像进行缩小后->
放大缩小的原理其实很简单,只要在之前的逻辑物理映射关系式中加入zoom为缩放系数即可。
相关文章推荐
- c++实现身份证是否合法判断函数
- 数据结构之C++实现二叉树(BinTree)(无主函数)
- 探索c++的函数pow()的实现方法·数学与程序设计的结合
- C++ 实现把非静态成员函数作为回调函数(非static)
- strstr()函数c++代码实现实例及运行结果
- C++中虚函数功能的实现机制
- 在Delphi与C++之间实现函数与对象共享
- C++覆盖(虚函数的实现原理)
- 在C++中类的对象作为函数形参在底层的实现机制
- C++中,类和函数分开定义声明和实现的方法
- C++ 类非静态成员函数作为线程入口函数实现
- c++中实现python中的zfill()函数的功能
- 易用的C++ RPC服务框架 - pioneer - 5 - 技术实现:函数的序列化
- C++的虚函数的实现原理
- [C++] 如何不用虚函数实现多态
- matlab linspace函数C++实现
- C/C++ 实现函数回调
- C++实现字符串数组作为函数的参数的反序输出
- MATLAB中union函数的C++实现
- c++实现atoi()和itoa()函数(字符串和整数转化)