GDI+ C++实现函数曲线图

       Windows GDI(Graphics Device Interface,图形装置界面),这是Windows操作系统的一个图形包,用于支持Windows操作系统中的图形界面,它也帮助开发人员在不考虑特定设备细节的情形下在计算机上进行绘图操作。
      随着开发技术的进步,GDI从某种意义上已经不能满足需求,于是微软把GDI进一步封装抽象,形成新的GDI+,并在性能和功能上进一步完善。GDI+构成了Windows XP操作系统及其后续版本的子系统的应用程序编程接口(API)。GDI+负责在屏幕和打印机上显示信息,它是GDI的改进,同时也是.NET框架结构的重要组成部分。和GDI一样,它提供了对二维图形图像和文字排版处理的支持,通过GDI+能够创建与设备无关的应用程序。使用GDI+可以创建图形、绘制文本以及将图形图像作为对象来操作,旨在提高性能和易用性。
      利用GDI+绘制函数曲线时必须首先知道的是逻辑窗口的原点在物理坐标中的位置和逻辑像素与物理坐标单位(或设备像素)之间的比例关系(映射)。GDI+在坐标系中绘制直线、矩形和其他形状,默认坐标系的原点是左上角,并且X轴指向右边,Y轴指向下边。默认坐标系的度量单位是像素。
                              GDI+ C++实现函数曲线图_第1张图片                    
绘图常用到的类库:
                            GDI+ C++实现函数曲线图_第2张图片
      绘制函数曲线的算法思想很简单,其实就是根据该指定的函数表达式精确地计算出各个点,并对每两个点进行DrawLine(Mypen,Point1,Ponit2)操作,以物理坐标的原点为起点,设定每两个点的间隔(我取0.001,测试过发现该精确度已足够),分正负轴进行绘制。
      下面是对绘制函数框的背景的绘制,包括网格,X,Y轴以及对原点的标记
      有关画笔字体笔刷之类的定义声明就不再罗嗦了,搞得跟教程一样囧,下面直接贴代码...GDI+ C++实现函数曲线图_第3张图片

下面是绘制函数y=sinx*x的代码

GDI+ C++实现函数曲线图_第4张图片

有关像素点的值由于本人刚接触GDI+绘图,只能是在窗口下挨个数值带入代码进行操作测试找对应比例值囧,其实绘制函数曲线最关键的就是找到合适的逻辑坐标与物理坐标的映射关系,其他的诸如生成n多点描绘连线之类的估计地球人都会,呵呵~

生成函数y=sinx*x图像:
GDI+ C++实现函数曲线图_第5张图片

对图像进行缩小后->
GDI+ C++实现函数曲线图_第6张图片   

  放大缩小的原理其实很简单,只要在之前的逻辑物理映射关系式中加入zoom为缩放系数即可。

你可能感兴趣的:(gdi+,c++,图形,windows,interface,测试)