在项目中新建类Pie.cs
Code
using System;
using System.Drawing;
namespace aa {
public class Pie
{
private Graphics objGraphics; //Graphics 类提供将对象绘制到显示设备的方法
private Bitmap objBitmap; //位图对象
private int m_Width = 700; //图像宽度
private int m_Height = 400; //图像高度
private string m_Title = "";
private string m_Unit = "百分比";
//键
private string[] m_Keys = new string[]{"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
//值
private float[] m_Values = new float[]{21.5f,36.2f,48.7f,55.4f,21.6f,12.8f,99.5f,36.4f,78.2f,56.4f,45.8f,66.4f};
private Color m_BgColor = Color.Snow; //背景
private Color m_TextColor = Color.Black; //文字颜色
private Color m_BorderColor = Color.Black; //整体边框颜色
//Pie颜色数组
private Color[] m_PieColor = new Color[]{Color.Green,Color.Red,Color.Yellow,Color.Blue,Color.Orange,Color.Aqua,Color.SkyBlue,Color.DeepPink,Color.Azure,Color.Brown};
public int Width
{
set
{
if(value < 300)
{
m_Width = 300;
}
else
{
m_Width = value;
}
}
get
{
return m_Width;
}
}
public int Height
{
set
{
if(value < 300)
{
m_Height = 300;
}
else
{
m_Height = value;
}
}
get
{
return m_Height;
}
}
public string Title
{
set
{
m_Title = value;
}
get
{
return m_Title;
}
}
public string Unit
{
set
{
m_Unit = value;
}
get
{
return m_Unit;
}
}
public string[] Keys
{
set
{
m_Keys = value;
}
get
{
return m_Keys;
}
}
public float[] Values
{
set
{
m_Values = value;
}
get
{
return m_Values;
}
}
public Color BgColor
{
set
{
m_BgColor = value;
}
get
{
return m_BgColor;
}
}
public Color TextColor
{
set
{
m_TextColor = value;
}
get
{
return m_TextColor;
}
}
public Color BorderColor
{
set
{
m_BorderColor = value;
}
get
{
return m_BorderColor;
}
}
public Color[] PieColor
{
set
{
m_PieColor = value;
}
get
{
return m_PieColor;
}
}
private Color GetColor(int i) //分配各Pie的颜色
{
try
{
if( 0 < i && i < PieColor.Length )
{
return PieColor[i];
}
else if( i >= PieColor.Length )
{
int j = i % PieColor.Length;
return PieColor[j];
}
else
{
return Color.Green;
}
}
catch
{
return Color.Green;
}
}
//生成图像并返回bmp图像对象
public Bitmap CreateImage()
{
InitializeGraph();
DrawRight(ref objGraphics);
DrawContent(ref objGraphics);
return objBitmap;
}
//初始化和填充图像区域,画出边框,初始标题
private void InitializeGraph()
{
//根据给定的高度和宽度创建一个位图图像
objBitmap = new Bitmap(Width,Height);
//从指定的 objBitmap 对象创建 objGraphics 对象 (即在objBitmap对象中画图)
objGraphics = Graphics.FromImage(objBitmap);
//根据给定颜色(LightGray)填充图像的矩形区域 (背景)
objGraphics.DrawRectangle(new Pen(BorderColor,1),0,0,Width,Height);
objGraphics.FillRectangle(new SolidBrush(BgColor),1,1,Width-2,Height-2);
//初始化标题
CreateTitle(ref objGraphics);
}
//初始化右边说明部分
private void DrawRight(ref Graphics objGraphics)
{
objGraphics.DrawString(String.Format("单位:{0}",Unit),new Font("宋体",10),new SolidBrush(TextColor),Width-95,30);
Point KeysPoint = new Point(Width-120,50);
Point KeysTextPoint = new Point(Width-90,50);
for(int i=0;i < Keys.Length;i++)
{
objGraphics.DrawRectangle(new Pen(BorderColor,1),KeysPoint.X,KeysPoint.Y,21,11);
objGraphics.FillRectangle(new SolidBrush(GetColor(i)),KeysPoint.X,KeysPoint.Y,20,10);
objGraphics.DrawString(String.Format("{0} {1}",Keys[i],Values[i]),new Font("宋体",10),new SolidBrush(TextColor),KeysTextPoint);
KeysPoint.Y +=15;
KeysTextPoint.Y += 15;
}
}
private void DrawContent(ref Graphics objGraphics)
{
float Sum = 0;
float StartAngle = 0;
float SweepAngle = 0;
float CircleHeight = 0;
float CircleX = 0;
float CircleY = 0;
for(int i=0;i<Values.Length;i++)
{
Sum += Values[i];
}
if(Width > Height)
{
CircleHeight = Height - 100;
}
else
{
CircleHeight = Width - 150;
}
CircleX = (Width - 150)/2 - CircleHeight/2;
CircleY = Height - 50 - CircleHeight;
for(int i=0;i<Values.Length;i++)
{
SweepAngle = (Values[i]/Sum)*360;
objGraphics.DrawPie (new Pen(BorderColor,1),CircleX,CircleY,CircleHeight,CircleHeight,StartAngle,SweepAngle);
objGraphics.FillPie (new SolidBrush(GetColor(i)),CircleX,CircleY,CircleHeight,CircleHeight,StartAngle,SweepAngle);
StartAngle += SweepAngle;
}
}
//初始化标题
private void CreateTitle(ref Graphics objGraphics)
{
objGraphics.DrawString(Title,new Font("宋体",16),new SolidBrush(TextColor),new Point(5,5));
}
}
}
using System;
using System.Drawing;
namespace aa {
public class Pie
{
private Graphics objGraphics; //Graphics 类提供将对象绘制到显示设备的方法
private Bitmap objBitmap; //位图对象
private int m_Width = 700; //图像宽度
private int m_Height = 400; //图像高度
private string m_Title = "";
private string m_Unit = "百分比";
//键
private string[] m_Keys = new string[]{"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
//值
private float[] m_Values = new float[]{21.5f,36.2f,48.7f,55.4f,21.6f,12.8f,99.5f,36.4f,78.2f,56.4f,45.8f,66.4f};
private Color m_BgColor = Color.Snow; //背景
private Color m_TextColor = Color.Black; //文字颜色
private Color m_BorderColor = Color.Black; //整体边框颜色
//Pie颜色数组
private Color[] m_PieColor = new Color[]{Color.Green,Color.Red,Color.Yellow,Color.Blue,Color.Orange,Color.Aqua,Color.SkyBlue,Color.DeepPink,Color.Azure,Color.Brown};
public int Width
{
set
{
if(value < 300)
{
m_Width = 300;
}
else
{
m_Width = value;
}
}
get
{
return m_Width;
}
}
public int Height
{
set
{
if(value < 300)
{
m_Height = 300;
}
else
{
m_Height = value;
}
}
get
{
return m_Height;
}
}
public string Title
{
set
{
m_Title = value;
}
get
{
return m_Title;
}
}
public string Unit
{
set
{
m_Unit = value;
}
get
{
return m_Unit;
}
}
public string[] Keys
{
set
{
m_Keys = value;
}
get
{
return m_Keys;
}
}
public float[] Values
{
set
{
m_Values = value;
}
get
{
return m_Values;
}
}
public Color BgColor
{
set
{
m_BgColor = value;
}
get
{
return m_BgColor;
}
}
public Color TextColor
{
set
{
m_TextColor = value;
}
get
{
return m_TextColor;
}
}
public Color BorderColor
{
set
{
m_BorderColor = value;
}
get
{
return m_BorderColor;
}
}
public Color[] PieColor
{
set
{
m_PieColor = value;
}
get
{
return m_PieColor;
}
}
private Color GetColor(int i) //分配各Pie的颜色
{
try
{
if( 0 < i && i < PieColor.Length )
{
return PieColor[i];
}
else if( i >= PieColor.Length )
{
int j = i % PieColor.Length;
return PieColor[j];
}
else
{
return Color.Green;
}
}
catch
{
return Color.Green;
}
}
//生成图像并返回bmp图像对象
public Bitmap CreateImage()
{
InitializeGraph();
DrawRight(ref objGraphics);
DrawContent(ref objGraphics);
return objBitmap;
}
//初始化和填充图像区域,画出边框,初始标题
private void InitializeGraph()
{
//根据给定的高度和宽度创建一个位图图像
objBitmap = new Bitmap(Width,Height);
//从指定的 objBitmap 对象创建 objGraphics 对象 (即在objBitmap对象中画图)
objGraphics = Graphics.FromImage(objBitmap);
//根据给定颜色(LightGray)填充图像的矩形区域 (背景)
objGraphics.DrawRectangle(new Pen(BorderColor,1),0,0,Width,Height);
objGraphics.FillRectangle(new SolidBrush(BgColor),1,1,Width-2,Height-2);
//初始化标题
CreateTitle(ref objGraphics);
}
//初始化右边说明部分
private void DrawRight(ref Graphics objGraphics)
{
objGraphics.DrawString(String.Format("单位:{0}",Unit),new Font("宋体",10),new SolidBrush(TextColor),Width-95,30);
Point KeysPoint = new Point(Width-120,50);
Point KeysTextPoint = new Point(Width-90,50);
for(int i=0;i < Keys.Length;i++)
{
objGraphics.DrawRectangle(new Pen(BorderColor,1),KeysPoint.X,KeysPoint.Y,21,11);
objGraphics.FillRectangle(new SolidBrush(GetColor(i)),KeysPoint.X,KeysPoint.Y,20,10);
objGraphics.DrawString(String.Format("{0} {1}",Keys[i],Values[i]),new Font("宋体",10),new SolidBrush(TextColor),KeysTextPoint);
KeysPoint.Y +=15;
KeysTextPoint.Y += 15;
}
}
private void DrawContent(ref Graphics objGraphics)
{
float Sum = 0;
float StartAngle = 0;
float SweepAngle = 0;
float CircleHeight = 0;
float CircleX = 0;
float CircleY = 0;
for(int i=0;i<Values.Length;i++)
{
Sum += Values[i];
}
if(Width > Height)
{
CircleHeight = Height - 100;
}
else
{
CircleHeight = Width - 150;
}
CircleX = (Width - 150)/2 - CircleHeight/2;
CircleY = Height - 50 - CircleHeight;
for(int i=0;i<Values.Length;i++)
{
SweepAngle = (Values[i]/Sum)*360;
objGraphics.DrawPie (new Pen(BorderColor,1),CircleX,CircleY,CircleHeight,CircleHeight,StartAngle,SweepAngle);
objGraphics.FillPie (new SolidBrush(GetColor(i)),CircleX,CircleY,CircleHeight,CircleHeight,StartAngle,SweepAngle);
StartAngle += SweepAngle;
}
}
//初始化标题
private void CreateTitle(ref Graphics objGraphics)
{
objGraphics.DrawString(Title,new Font("宋体",16),new SolidBrush(TextColor),new Point(5,5));
}
}
}
调用
Code
Pie pie = new Pie(); //定义一个画图类实例
DataTable dt = ssih.GetList("1=1 order by dataDate desc");
string[] kzKeys = {"看多","看平","看空"};
pie.Keys = kzKeys;
float[] kzValues = {float.Parse(Convert.ToString(Convert.ToDouble(dt.Rows[0]["zxyc1"].ToString())*100)),float.Parse(Convert.ToString(Convert.ToDouble(dt.Rows[0]["zxyc2"].ToString())*100)),float.Parse(Convert.ToString(Convert.ToDouble(dt.Rows[0]["zxyc3"].ToString())*100))};
pie.Values = kzValues;
Bitmap bmp = pie.CreateImage();
bmp.Save(@"D:\work\cnqsq\Pie.jpg",ImageFormat.Jpeg);
//D:\work\cnqsq\Pie.jpg此目录要有asp_net写入的权限
Pie pie = new Pie(); //定义一个画图类实例
DataTable dt = ssih.GetList("1=1 order by dataDate desc");
string[] kzKeys = {"看多","看平","看空"};
pie.Keys = kzKeys;
float[] kzValues = {float.Parse(Convert.ToString(Convert.ToDouble(dt.Rows[0]["zxyc1"].ToString())*100)),float.Parse(Convert.ToString(Convert.ToDouble(dt.Rows[0]["zxyc2"].ToString())*100)),float.Parse(Convert.ToString(Convert.ToDouble(dt.Rows[0]["zxyc3"].ToString())*100))};
pie.Values = kzValues;
Bitmap bmp = pie.CreateImage();
bmp.Save(@"D:\work\cnqsq\Pie.jpg",ImageFormat.Jpeg);
//D:\work\cnqsq\Pie.jpg此目录要有asp_net写入的权限