C#如何实现画矩形图,饼状图

原创 2007年10月04日 21:05:00

      在用C#做报表类的网站的时候,很多时候需要一些图形来直观的表达数据所蕴含的信息,这些图形包括曲线图,矩形图,饼状图,  最近作了个项目,内容涉及到画CPK曲线,画某个时间段各个工站的产能图,良率图,以及每月的产能图。现贴出来跟大家一起分享。

画出的效果如下:

 

      画图常需要的命名空间是:using System.Drawing;

     画图主函数:

 private void DrawGraph()

  {
   // 在此处放置用户代码以初始化页面
   Graphics objGraphis;
   int width=600,height=300;
   Bitmap objBitMap=new Bitmap(width,height);//图片的大小
   objGraphis=Graphics.FromImage(objBitMap);
   objGraphis.Clear(Color.White);//设置图片背景颜色
   System.Drawing.Pen pen=new System.Drawing.Pen(Brushes.Black,2);//设置画笔的颜色粗细
   System.Drawing.Pen pen1=new System.Drawing.Pen(Brushes.Black,1);//设置画笔的颜色粗细
   //画图形的外框,这样会好看些
   objGraphis.DrawLine(pen,0,0,width,0);
   objGraphis.DrawLine(pen,0,0,0,height);
   objGraphis.DrawLine(pen,0,height,width,height);
   objGraphis.DrawLine(pen,width,height,width,0);

   int [] arrValues={0,0};
   arrValues[0]=90;//存放Pass的数量
   arrValues[1]=10;//存放Fail的数量
   
   //文字标识
   string[] arrValueNames={"0","0"};
   arrValueNames[0]="Pass";
   arrValueNames[1]="Fail";

   objGraphis.DrawString("产线生产情况统计",new Font("宋体",10),Brushes.Black,new PointF(10,10));

   PointF symbolLeg=new PointF(300,20);//标识图的起初位置
   //画标识图
   objGraphis.FillRectangle(Brushes.Green,symbolLeg.X,symbolLeg.Y,40,20);
   objGraphis.DrawRectangle(Pens.Black,symbolLeg.X,symbolLeg.Y,40,20);
   objGraphis.DrawString(arrValueNames[0],new Font("宋体",10),Brushes.Black,new PointF(350,20));

   objGraphis.FillRectangle(Brushes.Red,symbolLeg.X+100,symbolLeg.Y,40,20);
   objGraphis.DrawRectangle(Pens.Black,symbolLeg.X+100,symbolLeg.Y,40,20);
   objGraphis.DrawString(arrValueNames[1],new Font("宋体",10),Brushes.Black,new PointF(450,20));
   //画坐标
   objGraphis.DrawLine(pen1,60,50,60,270);
   objGraphis.DrawLine(pen1,60,270,540,270);
   //画Y轴坐标
   for(int i=0;i<11;i++)
   {
    float ykedu=10*i;
    objGraphis.DrawLine(pen1,60,70+20*i,55,70+20*i);
    objGraphis.DrawString(ykedu.ToString(),new Font("宋体",10),Brushes.Black,30,270-20*i-5);
  

   }
   //画矩形图
   PointF RectangStart=new PointF(100,270);
   for (int i=0;i<2;i++)
   {
    objGraphis.FillRectangle(new SolidBrush(GetColor(i)),RectangStart.X,270-2*arrValues[i],100,arrValues[i]*2);//矩形的宽度为50和相应数值的高度
    objGraphis.DrawRectangle(Pens.Black,RectangStart.X,270-arrValues[i]*2,100,arrValues[i]*2);
    objGraphis.DrawString(arrValues[i].ToString(),new Font("宋体",10),Brushes.Black,RectangStart.X+10,270-arrValues[i]*2-15);
                RectangStart.X+=110;
   }

 


   //画饼形图
   float sglCurrentAngle;
   float sglTotalAngle=0;
   for(int a=0;a<arrValues.Length-1;a++)
   {
    sglTotalAngle+=arrValues[a];

   }
   for (int b=0;b<arrValues.Length;b++)
   {
    sglCurrentAngle=arrValues[b]/sglTotalAngle*360;
    objGraphis.FillPie(new SolidBrush(GetColor(b)),420,95,100,100,sglTotalAngle,sglCurrentAngle);
    sglTotalAngle+=sglCurrentAngle;
   }
   objBitMap.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);

 //将图形输出到屏幕,也可以将图形输出到Image控件上.
  }

颜色获取函数

private Color GetColor(int itemIndex)
  {
   Color objColor=new Color();
   switch(itemIndex)
   {
    case 0:
     objColor=Color.Green;
     break;
    case 1:
     objColor=Color.Red;
     break;
    default:
     objColor=Color.Blue;
     break;


   }
   return objColor;
  }

相关文章推荐

C#中System.Drawing来画立体饼状图

核心代码: /// /// 创建立体感的饼状图 /// /// 扇区角度List集合 /// 扇区上面亮度List集合 /// 扇区下面暗度Lis...

c# 画柱状图 dll自定义控件

  • 2011年05月30日 20:28
  • 24KB
  • 下载

c#怎么实现chart柱状图的不同颜色

http://zhidao.baidu.com/link?url=dP8Md5aIZ1zacDe5tRRkqKTYyOUQgfgYkjViN0hDgpGDiGZlJWBcf6aQFYcLXJRrOuT...

c#饼状图绘制

  • 2013年07月21日 21:01
  • 38KB
  • 下载

C# 实现完整功能的截图控件(1)-实现绘图工具栏控件 控件实现了截图、绘制矩形、圆形、箭头、线条、文字,还需要可以撤销绘制步骤、保存图形等功能,基本实现了跟QQ2008截图一样的功能,还可以更

C# 实现完整功能的截图控件(1)-实现绘图工具栏控件   控件实现了截图、绘制矩形、圆形、箭头、线条、文字,还需要可以撤销绘制步骤、保存图形等功能,基本实现了跟QQ2008截图一样的功能,还可...

用C#实现随机画矩形

  • 2008年11月14日 08:43
  • 22KB
  • 下载

flash实现的HTML饼状图控件

  • 2008年12月02日 15:43
  • 85KB
  • 下载

在柱状图中找最大矩形——O(n)时间复杂度java实现

最近在准备找工作,知道了这道题,用java实现了O(n)时间复杂度的算法。     具体题目如下:给一组非负的整数来表示一个柱状图,设计一个算法获得柱状图中最大矩形的面积。比如,输入如下数据:2,1,...
  • xybsos
  • xybsos
  • 2012年10月08日 16:47
  • 6764

基于OSG平台的三维饼状图实现

  • 2013年01月28日 10:42
  • 2.07MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#如何实现画矩形图,饼状图
举报原因:
原因补充:

(最多只允许输入30个字)