开发者

C语言绘制曲线图的示例代码

统计图曲线图绘制方法

常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。

前几类图比较容易绘制,饼图环形图绘制较难。

曲线图的曲线绘制较难,今提供曲线图的绘制方法供参考。

本方法采用C语言的最基本功能:

( 1) 绘图功能画线,画圆,画长方形。

(2) 界面美工设计,界面文字打印输出。

代码中有详细的注释,通俗易懂,一看就会。

效果图

C语言绘制曲线图的示例代码

C语言绘制曲线图的示例代码

实现代码

下面提供2个绘制曲线图的代码:

//变量: 可设置成全局变量或私有变量
Canvas cs ;     //画布,绘制图表载体
float pi=3.1415926535 ;
float a ;            //三角函数 sin (a), cos (a), 
float r ;             //圆半径 radius
int i, j, n ;
float x0,y0,x1,y1 ;  //作图坐标
float dx,dy ;             //中心坐标
string ss, ss1, ss2 ;         //打印文字
 int p[6] ;        //set data or  input  data
double pn ;   //显示数据
 
//*************************  

CurveGraph6 (){   //曲线图 6
      cs.ClearDraw (0,src);   //清屏
      clearOutput();
      selectStyle () ; //图例样式选项设置
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetColor (255,250,250,250);
      cs.DrawRect (0,4,720,600);   //back board
      cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,586);   //back      
      cs.SetColor (255,250,250,250);
      cs.DrawRect (20,20,700,580);   //back 

      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor (255,0,0,240);
      cs.DrawRect (20,20,700,580);   //框线
      cs.DrawRect (24,24,696,576);   //框线

      cs.SetFillMode (1);//0不填色,1填色
      cs.SetStrokeWidth(1);
      cs.SetColor(255,220,220,220);
      for (j=0; j<=10 ; j++){   
      for (i=0; i<=7 ; i++){   
          dx=j*50+100 ;
          dy=i*50+50 ;
          cs.DrawRect(dx,dy,dx+49,dy+49);  }  }//grid

           cs.SetTextStyle (0);
           cs.SetColor(255,0,0,250);
      cs.DrawRect (50,450,670,452);   //X线
      cs.DrawRect (99,48,101,450);   //Y线
          cs.SetColor(255,250,0,0);
          cs.SetTextSize (18);
     cs.DrawRect (90,249,670,251);   //standard线
      cs.DrawText ("0.75", 52 ,109) ;
      cs.DrawText ("0.50", 52 ,159) ;
      cs.DrawText ("0.25", 52 ,209) ;
      cs.DrawText ("0", 65 ,259) ;
      cs.DrawText ("-0.25", 50 ,309) ;
      cs.DrawText ("-0.50", 50 ,359) ;
      cs.DrawText ("-0.75", 50 ,409) ;
 
      cs.SetTextStyle (0);     //画标尺
      cs.SetTextSize (18);
             cs.SetColor(255,50,80,80);
      ss=" 0         30       60        90      120      150 " ;
      ss1=" 180     210     240     270     300     330" ;
      cs.DrawText (ss,90,475) ;
      cs.DrawText (ss1,380,475) ;   //standard
      cs.SetTextSize (24);
      cs.DrawText ("Sec >",30, 475) ;

 //draw Curve graphics  绘制曲线
//* curve : x1 +5 标尺x轴 0 位,  bs*5 步长
//x0 曲线幅宽,   + -pn y轴峰谷弧高,  y+300 x轴y定位
// pn= 0 -- 200 高,bs=50*2
  int bs ;   //步长
//p[1]=150; p[2]=80; p[3]=100; p[4]=50; p[5]=140;
         cs.SetColphpor (255,0,120,0);
  for (n=1; n<=5; n++){
        bs=n*100-100 ;
        //pn=p[n] ;
        Rn=random ()*90+50 ;
        pn=(int) Rn ;
  for (i=120;i<240;i++){
         a=pi/360*i*6 ;     //360 曲线点密度
         x0=50;
        // pn=170 ;
         x1=(float)((x0/pi*a)+bs);
         y1=(float)(- pn*sin(a)+250);
         cs.DrawCircle(x1,y1,2);   }   }
      cs.Update ();
          sleep (300) ;

  for (n=1; n<=5; n++){
        bs=n*100-100 ;
        Rn=random ()*40+40 ;
        pn=(int) Rn ;
  for (i=120;i<240;i++){
         a=pi/360*i*6 ;     //360 曲线点密度
         x0=50;
         x1=(float)((x0/pi*a)+bs);
         y1=(float)(- pn*sin(a)+250);
            cs.SetColor (255,250,100,160);
         cs.DrawCircle(x1,y1,1);   
            cs.SetColor (255,250,220,150);
         cs.DrawLine (x1,y1,x1,250) ;    }   }

 //draw title
       cs.SetFillMode (1);//0不填色,1填色
       cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
       cs.SetTextSize (26);
       cs.SetColor (255,0,220,150);
       cs.DrawText ("Curve Chart ",470,80) ;
       cs.SetTextSize (50);
           ss="统计图  -  曲线图" ;
       cs.SetColor(255,50,120,20);      //立体字
           cs.DrawText (ss,164,534);    //阴影
      cs.SetColor(255,0,250,0);
           cs.DrawText (ss,160,530);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,160,530);    //框线
       cs.Update ();
}//CurveGraph6 ()

CurveGraph7 (){    //曲线图 7:填充区域
      cs.ClearDraw (0,src);   //清屏
      clearOutput();
      selectStyle () ; //图例样式选项设置
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetColor (255,250,250,250);
      cs.DrawRect (0,4,720,600);   //back board
      cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,586);   //back      
      cs.SetColor (255,250,250,250);
      cs.DrawRect (20,20,700,580);   //back 

      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor (255,0,0,240);
      cs.DrawRect (20,20,700,580);   //框线
      cs.DrawRect (24,24,696,576);   //框线

      cs.SetFillMode (1);//0不填色,1填色
      cs.SetStrokeWidth(1);
      cs.SetColor(255,220,220,220);
      for (j=0; j<=10 ; j++){   
      for (i=0; i<=7 ; i++){   
          dx=j*50+100 ;
          dy=i*50+50 ;
          cs.DrawRect(dx,dy,dx+49,dy+49);  }  }//grid

          cs.SetTextStyle (编程客栈0);
          cs.SetTextSize (18);
          cs.SetColor(255,0,0,250);
      cs.DrawRect (50,450,670,452);   //X线
      cs.DrawRect (99,48,101,450);   //Y线
           cs.SetColor(255,250,0,0);
      cs.DrawRect (90,249,670,251);   //standard线
      cs.DrawText ("0.75", 52 ,107) ;
      cs.DrawText ("0.50", 52 ,157) ;
      cs.DrawText ("0.25", 52 ,207) ;
      cs.DrawText ("0", 65 ,257) ;
      cs.DrawText ("-0.25", 50 ,307) ;
      cs.DrawText ("-0.50", 50 ,357) ;
      cs.DrawText ("-0.75", 50 ,407) ;
 
      cs.SetTextStyle (1);     //画标尺
      cs.SetTextSize (18);
            cs.SetColor(255,0,0,0);
      ss=" 0         30       60        90      120      150 " ;
      ss1=" 180     210     240     270     300     330" ;
      cs.DrawText (ss,90,475) ;
      cs.DrawText (ss1,380,475) ;   //standard
      cs.SetTextSize (24);
      cs.DrawText ("Sec >",30, 475) ;

//draw Curve graphics  绘制曲线
//* curve : x1-bs 标尺x轴 0 位,  bs 幅宽
//x0 X轴 0位,   + -pn y轴峰谷弧高,  y+250 x轴y定位
// pn= 0 -- 200,+ - pn> 正弦余弦。bs=幅宽
  int bs ;   //步长
         cs.SetStrokeWidth(1);
         cs.SetColor (255,255,0,0);
   for (i=100;i<283;i++){
       a=pi/360*i*6 ;  //360 完整双曲线,小于为局部段
       // x0=240 ;  bs=300 ;  pn=150 ;  //i=100-285 (1)
       x0=180 ;  bs=200 ;  pn=80 ;  //i=100-283 (2)
       x1=(float)((x0/pi*a)-bs);   //bs=50--300
       y1=(float)(-pn*sin(a)+250); //dy=250 Y轴center
           cs.SetColor (255,255,0,0);
        cs.DrawCircle(x1,y1,2);   
            cs.SetColor (255,0,0,250);
         cs.DrawLine (x1,y1,x1,250) ;      }

  for (n=1; n<=8; n++){    //draw python多条曲线
        Rn=random ()*60+100 ;
        pn=(int) Rn ;
   for (i=100;i<283;i++){
       a=pi/360*i*6 ;  //360 完整双曲线,小于为局部段
       x0=180 ;  bs=200 ;  //pn=80 ;  
       x1=(float)((x0/pi*a)-bs);   //bs=50--300
       y1=(float)(-pn*sin(a)+250); //dy=250 Y轴center
     if (n==1||n==5) cs.SetColor (255,200,0,100);
     if (n==2||n==6) cs.SetColor (255,250,150,100);
     if (n==3||n==7) cs.SetColor (255,0,0,250);
     if (n==4||n==8) cs.SetColor (255,250,100,130);
         cs.DrawCircle(x1,y1,1.5);   }    }

//draw title
      cs.SetFillMode (1);//0不填色,1填色
        cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
       cs.SetTextSize (26);
      cs.DrawText ("Curve Chart ",470,80) ;
      cs.SetTextSize (50);
         ss="统计图  -  曲线图" ;
      cs.SetColor(255,50,120,20);      //立体字
           cs.DrawText (ss,164,534);    //阴影
    http://www.devze.com  cs.SetColor(255,0,250,0);
           cs.DrawText (ss,160,530);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,160,5http://www.devze.com30);    //框线
       cs.Update ();
}//CurveGraph7 ()

到此这篇关于C语言绘制曲线图的示例代码的文章就介绍到这了,更多相关C语言曲线图内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜