亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用C語言繪制統(tǒng)計圖中的餅圖

 更新時間:2024年02月15日 07:34:06   作者:老花眼貓  
常用的統(tǒng)計圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖,本文主要為大家詳細介紹了如何使用使用C語言繪制統(tǒng)計圖中的餅圖,希望對大家有所幫助

統(tǒng)計圖餅圖繪制方法(C語言)

常用的統(tǒng)計圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖。

前幾類圖比較容易繪制,餅圖繪制較難。今值此介紹餅圖的繪制方法。

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

(1) 繪圖功能畫線,畫圓,畫長方形。

(2) 界面美工設計,界面文字打印輸出。

代碼中有詳細的注釋,通俗易懂,一看就會。

效果圖

實現(xiàn)代碼

下面是繪制餅圖的代碼:

//變量: 可設置成全局變量或私有變量
Canvas cs ;     //畫布,繪制圖表載體
float pi=3.1415926535 ;
float a ;            //三角函數(shù) sin (a), cos (a), 
float r ;             //圓半徑 radius
int i, j, n ;
float x0,y0,x1,y1 ;  //作圖坐標
float dx,dy ;             //中心坐標
string ss, ss1, ss2 ;         //打印文字

//餅圖的代碼 PieGraph ( ):
PieGraph ( ) {      //繪制餅圖和突出顯示圖塊
  int p[6] ;        //set data or get data
  int k[6] ;         //作圖數(shù)據(jù)換算
  double pn ;   //顯示百分比數(shù) " 29.16% "
  int setn ;        //突出圖塊選項
  double ma ;    //圖上標文字 " 29.16% "

      cs.ClearDraw (0,src);   //清屏(cls), clear screen
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetColor (255,250,250,250);
      cs.DrawRect (0,4,720,600);   //畫圖表底板
      cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,586);   //back      
      cs.SetColor (255,230,240,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.SetTextSize (28);      //題標
          cs.SetColor (255,0,0,250);
      cs.DrawText ("達克科技?DUCK",470,60) ;
      cs.SetStrokeWidth(2);
           //圖例: 圖表底板寬高 720  *600
           dx=360 ; dy=300 ;       //center
      cs.SetColor(255,250,240,240);
      cs.DrawCircle(dx,dy,128);     //圖底板圓形
 
      cs.SetTextStyle (0);
      cs.SetTextSize (18);
            r=120 ;      //radius
            setn=1 ;        //突出圖塊選項
   p[1]=210;  p[2]=165;  p[3]=115;  p[4]=135; p[5]=95;
//預設置數(shù)據(jù) p (5) 
//*本圖例預設置數(shù)據(jù),可另行設計數(shù)據(jù)輸入方法
//為保證圖案填充色需增加線條密度,故作圖整個
//圓分為 720 線,data p(n) 湊數(shù)成720。
//*若其他數(shù)據(jù)項要按比例換算成總數(shù)相加為720的數(shù)。
//若數(shù)據(jù)項和不滿 720 圖樣就變?yōu)樯刃巍?
       //輸入數(shù)據(jù) p(n) 轉(zhuǎn)換成繪圖數(shù)據(jù)值 k(n)
       k[0]= -180;   
       k[1]=k[0]+p[1];
       k[2]=k[1]+p[2];
       k[3]=k[2]+p[3];
       k[4]=k[3]+p[4];
       k[5]=k[4]+p[5];
          
     for (n=1; n<=5 ; n++){   //data=5,繪制餅圖
     for (i= k[n-1] ; i<=k[n] ; i++){    //draw Piegraph
           a=pi/360*i ;   //**  a/2 繪出的是半圓圖形
       if (n==1) cs.SetColor(255,0,250,0);
       if (n==2) cs.SetColor(255,240,140,0);
       if (n==3) cs.SetColor(255,250,0,0);
       if (n==4) cs.SetColor(255,140,40,220);
       if (n==5) cs.SetColor(255,0,150,180);
           x0=(float)(r*cos (a))+dx;     //r=radius
           y0=(float)(r*sin (a))+dy;
           cs.DrawLine (dx,dy,x0,y0);  //逐線繪出
           cs.DrawRect (100,n*50,195,30+n*50); //色標

      //** print data as "29.16%"
           s=intToString (p[n]);
           cs.DrawText (s, 60,20+n*50);
           pn=p[n]*10000/720 ;    //擴大100, +"%"
           pn=pn/100 ;      //保留2位小數(shù)
           ss1=doubleToString (pn)+"%" ;
           cs.SetColor(255,250,250,250);
           cs.DrawText (ss1,120,20+n*50);
      if (n==1&&setn==1) ss2=ss1 ;
      if (n==2&&setn==2) ss2=ss1 ;
      cs.SetColor(255,0,0,150);    //圖上標( n% )
            ma=pi/360*((k[n-1]+k[n])/2) ;
       x1=(float)((r-45)*cos (ma))+dx-30;     
       y1=(float)((r-35)*sin (ma))+dy ;
            cs.DrawText (ss1,x1,y1);

 //*畫環(huán)圖方法: 中心加圓是環(huán)圖,不加圓是餅圖
     //cs.SetColor(255,250,240,240);
     //cs.DrawCircle(dx,dy,50);    //中心加圓是環(huán)圖      
          cs.Update ();    }   }  //逐線動畫顯示繪制過程

  //* 演示繪制重點突出的圖塊,暫設圖例1 和 圖例2
  //* 展示二種畫法 //***
  //*本圖例預設置,可另設計圖表點擊選取或其他選項方法 。
 // 預設 setn=1 ;  0=無,setn1-5 可選。
 //  for (i= k[0] ; i<=k[1] ; i++){      設置通用 k (n) , kstart  to kend 即可
//*此方法可改寫為 setn1-setn5 通用方法。
      sleep (500) ;   //延時
     if (setn==1){     
     for (i= k[0] ; i<=k[1] ; i++){ //銷隱圖塊,圓底色遮罩
           a=pi/360*i ;   
              cs.SetColor (255,250,240,240);  
           x0=(float)(r*cos (a))+dx;     
           y0=(float)(r*sin (a))+dy;
           cs.DrawLine (dx,dy,x0,y0);   }   
           cs.Update ();      //銷隱
     for (i= k[0] ; i<=k[1] ; i++){    //繪出突出圖塊
           a=pi/360*i ;   
              cs.SetColor (255,0,240,0);  
           x0=(float)(r*cos (a))+dx+8 ;     
           y0=(float)(r*sin (a))+dy-6 ;
           cs.DrawLine (dx+8,dy-6,x0,y0);   //draw out
              cs.SetColor (255,250,250,0);  
              cs.SetTextSize (20);    //show text
           cs.DrawText (ss2,dx+20,dy-42) ;
           cs.Update ();    }    }  //setn=1, 繪出突出色塊
  
     if (setn==2){
     for (i= k[1] ; i<=k[2] ; i++){    //銷隱圖塊
           a=pi/360*i ;   
              cs.SetColor (255,250,240,240);  
           x0=(float)(r*cos (a))+dx;     
           y0=(float)(r*sin (a))+dy;
           cs.DrawLine (dx,dy,x0,y0);   }   
           cs.Update ();      //銷隱

           a=pi/360*((k[1]+k[2])/2) ;  //*** 這是第二種畫法
            x1=(float)(10*cos (a))+dx ;     
            y1=(float)(10*sin (a))+dy ;
    for (i= k[1] ; i<=k[2] ; i++){    //繪出突出圖塊
           a=pi/360*i ;   
              cs.SetColor (255,240,140,0);  
           x0=(float)(r*cos (a))+x1;       //***
           y0=(float)(r*sin (a))+y1;        //***
          cs.DrawLine (x1,y1,x0,y0);   //***  draw out
              cs.SetColor (255,250,250,0);  
              cs.SetTextSize (20);    //show text
           cs.DrawText (ss2,x1+15,y1+60) ;   //***
           cs.Update ();    }  }    //setn=2, 繪出突出色塊

  //繪制立體字
       cs.SetFillMode (1);   //0不填色,1填色
       cs.SetTextSize (60);   
       cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
          ss="統(tǒng)計圖  -  餅圖" ;
       cs.SetColor(255,50,120,20);      
           cs.DrawText (ss,154,524);    //陰影
       cs.SetColor(255,0,200,250);
           cs.DrawText (ss,150,520);    //本字
       cs.SetFillMode (0);   //0不填色,1填色
       cs.SetColor(255,250,0,0);
           cs.DrawText (ss,150,520);    //框線
       cs.Update ();      //顯示
}//PieGraph ()

//**** END *****************

到此這篇關于使用C語言繪制統(tǒng)計圖中的餅圖的文章就介紹到這了,更多相關C語言餅圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論