皮皮网

皮皮网

【dubbo源码流程分析】【hive编程源码】【lisp 源码800】pipay源码

时间:2024-11-30 03:43:33 分类:热点

1.求一用C语言画直线的程序

pipay源码

求一用C语言画直线的程序

       C语言的话画直线用MoveTo()和LineTo()很简单啊。

       帮你复制一份我学习时老师给的dubbo源码流程分析画线两例:

       #include<graphics.h>

       #include<math.h>

       /*

       ###############################################################################

       功 能:本函数的作用是用逐点比较法来画一条直线

       格 式:void myline1(int x1,int y1,int x2,int y2,int color)

       参数说明:x1,y1是起始点坐标,x2,y2是终止点,color是画线的颜色

       调用示例:myline1(,,,,4)

       ###############################################################################

       */

       void myline1(int x1,int y1,int x2,int y2,int color)

       {

       /*变量定义开始(//增加)*/

       int iTx; /*x轴终点的相对坐标xa或临时变量*/

       int iTy; /*y轴终点的相对坐标ya或临时变量*/

       int iDx; /*x轴方向的步长dx*/

       int iDy; /*y轴方向的步长dy*/

       int iFt; /*偏差Fm*/

       int iSt; /*记数循环数(dx+dy)S*/

       int iXt; /*x方向循环变量xm*/

       int iYt; /*y方向循环变量ym*/

       /*变量定义结束*/

       /*变量初始化开始*/

       /*如果是第三象限或第四象限则换成第一或第二象限*/

       if(y2<y1)

       {

       iTx=x1;

       x1=x2;

       x2=iTx;

       iTy=y1;

       y1=y2;

       y2=iTy;

       }

       iTx=x2-x1; /*取x轴的相对坐标*/

       iTy=y2-y1; /*取y轴的相对坐标*/

       iDx=1;

       iDy=1;

       iFt=0;

       iSt=iTx+iTy;

       if(iTx<0)iSt=-1*iTx+iTy;; /*如果在第二象限,则x轴方向步长取负值*/

       iXt=0;

       iYt=0;

       /*变量初始化结束*/

       /*数据处理开始*/

       while(iSt>0)

       {

       putpixel(x1+iXt,hive编程源码y1+iYt,color);

       if(iTx>=0) /*如果在第一象限*/

       {

       if(iFt<0) /*如果偏差小于0*/

       {

       iYt+=iDy; /*y方向走一步*/

       iFt+=iTx;

       }

       else /*如果偏差大于或等于0*/

       {

       iXt+=iDx; /*x方向走一步*/

       iFt-=iTy;

       }

       }

       else

       {

       if(iFt<0) /*如果偏差小于0*/

       {

       iXt-=iDx; /*负x方向走一步*/

       iFt+=iTy;

       }

       else /*如果偏差大于或等于0*/

       {

       iYt+=iDy; /*y方向走一步*/

       iFt+=iTx;

       }

       }

       iSt--;

       }

       }

       /*

       ###############################################################################

       功 能:本函数的作用是用来画一条直线

       格 式:void myline2(int x1,int y1,int x2,int y2,int color)

       参数说明:x1,y1是起始点坐标,x2,y2是终止点,color是画线的颜色

       调用示例:myline2(,,,,4)

       ###############################################################################

       */

       int myline2(int x1,int y1,int x2,int y2,int color)

       {

       int iX; /*x方向的坐标变量*/

       int iY; /*y方向的坐标变量*/

       int iTx; /*x方向的步长变量*/

       int iTy; /*y方向的步长变量*/

       float fDx; /*x方向的差分变量*/

       float fDy; /*y方向的差分变量*/

       float fMinf; /*算法中的f*/

       float fMaxF; /*算法中的F*/

       float fS; /*终点判断变量*/

       fMinf=0.5; /*f=0.5*/

       iX=x1;

       iY=y1;

       putpixel(x1,y1,color);

       if(x1==x2&&y1==y2) /*如果终点和起始点相同*/

       {

       return(1);

       }

       iTx=1;

       iTy=1;

       fDx=(float)(x2-x1);

       fDy=(float)(y2-y1);

       fMaxF=fDy/fDx>0?fDy/fDx:(-fDy/fDx); /*F=|dy/dx|*/

       if(fDx<0)iTx=-1;

       if(fDy<0)iTy=-1;

       fS=fDx>0?fDx:(-fDx);

       if(fMaxF==1) /*如果F=1*/

       {

       iX=x1;

       iY=y1;

       while(fS>0)

       {

       iX+=iTx; /*x方向走一步*/

       iY+=iTy; /*y方向走一步*/

       putpixel(iX,iY,color);

       fS--;

       }

       }

       else if(fMaxF>1) /*如果F>1*/

       {

       fS+=fDy>0?fDy:(-fDy);

       while(fS>0)

       {

       iY+=iTy; /*y方向走一步*/

       putpixel(iX,iY,color);

       fMinf+=1/fMaxF; /*f=f+1/F*/

       fS--;

       if(fMinf>=1) /*如果f>=1*/

       {

       iX+=iTx; /*x方向走一步*/

       fMinf--; /*f=f-1*/

       putpixel(iX,iY,color);

       fS--;

       }

       }

       }

       else /*如果F<1*/

       {

       fS+=fDy>0?fDy:(-fDy);

       while(fS>0)

       {

       iX+=iTx; /*x方向走一步*/

       putpixel(iX,iY,color);

       fMinf+=fMaxF; /*f=f+F*/

       fS--;

       if(fMinf>=1) /*如果f>=1*/

       {

       iY+=iTy; /*y方向走一步*/

       fMinf--; /*f=f-1*/

       putpixel(iX,iY,color);

       fS--;

       }

       }

       }

       }