private void Form1_Load(object sender, EventArgs e)
{
string strConn = "SERVER=version-server;DATABASE=WMS;UID=WMSAdmin;PWD=admin";
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
string strSql = "SELECT a.SamNo , sum(c.FactNum)*100/sum(c.PlanNum) AS PickNum "
+ " FROM InputPlan a, ASN b, ASNDetail c "
+ " WHERE a.SamNo=b.SamNo And b.ASNCode =c.ASNCode AND a.UseState > 0 AND a.UseState < 3 "
+ " GROUP BY a.SamNo ";
SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);
DataSet ds = new DataSet();
sda.Fill(ds, "ds");
conn.Close();
picBoxPlan.Image = MyImage.Render("收货计划", "按批次", 630, 300, ds);
public DrawGraphClass()
{
}
/// <summary>
/// 数据源是PieChartValue对象的饼状图
/// </summary>
/// <param name="title">饼状图大标题</param>
/// <param name="subTitle">饼状图小标题</param>
/// <param name="width">图宽</param>
/// <param name="height">图高</param>
/// <param name="Mydata">PieChartValue对象</param>
/// <returns>饼状图路径</returns>
public Image Render(string title, string subTitle, int width, int height, PieChartValue[] Mydata)
{
const int SIDE_LENGTH = 400;
const int PIE_DIAMETER = 200;
//DataTable dt = DataTable;
//通过输入参数,取得饼图中的总基数
float sumData = 0;
for (int i = 0; i < Mydata.Length; i++)
{
sumData += Convert.ToSingle(Mydata[i].MValue);
}
//产生一个image对象,并由此产生一个Graphics对象
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
//设置对象g的属性
g.ScaleTransform((Convert.ToSingle(width)) / SIDE_LENGTH, (Convert.ToSingle(height)) / SIDE_LENGTH);
g.SmoothingMode = SmoothingMode.Default;
g.TextRenderingHint = TextRenderingHint.AntiAlias;
//画布和边的设定
g.Clear(Color.White);
g.DrawRectangle(Pens.Black, 0, 0, SIDE_LENGTH - 1, SIDE_LENGTH - 1);
//画饼图标题
g.DrawString(title, new Font("Tahoma", 14), Brushes.Black, new PointF(5, 5));
//画饼图的图例
g.DrawString(subTitle, new Font("Tahoma", 12), Brushes.Black, new PointF(7, 35));
//画饼图
float curAngle = 0;
float totalAngle = 0;
for (int j = 0; j < Mydata.Length; j++)
{
curAngle = Convert.ToSingle(Mydata[j].MValue) / sumData * 360;
g.FillPie(new SolidBrush(ChartUtil.GetChartItemColor(j)), 100, 65, PIE_DIAMETER, PIE_DIAMETER, totalAngle, curAngle);
g.DrawPie(Pens.Black, 100, 65, PIE_DIAMETER, PIE_DIAMETER, totalAngle, curAngle);
totalAngle += curAngle;
}
//画图例框及其文字
g.DrawRectangle(Pens.Black, 200, 300, 199, 99);
g.DrawString("图表说明", new Font("Tahoma", 12, FontStyle.Bold), Brushes.Black, new PointF(200, 300));
//画图例各项
PointF boxOrigin = new PointF(210, 330);
PointF textOrigin = new PointF(235, 326);
float percent = 0;
for (int k = 0; k < Mydata.Length; k++)
{
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(k)), boxOrigin.X, boxOrigin.Y, 20, 10);
g.DrawRectangle(Pens.Black, boxOrigin.X, boxOrigin.Y, 20, 10);
percent = Convert.ToSingle(Mydata[k].MValue) / sumData * 100;
g.DrawString(Mydata[k].MValue.ToString() + " - " + Mydata[k].Name.ToString() + " (" + percent.ToString("0") + "%)", new Font("Tahoma", 10), Brushes.Black, textOrigin);
boxOrigin.Y += 15;
textOrigin.Y += 15;
}
//回收资源
g.Dispose();
//此处存储路径需要自己改
System.Drawing.Image MyImage = (System.Drawing.Image)bm;
string TruePath = "C:\\"; //System.Web.HttpContext.Current.Server.MapPath("~/images");
string TrueName = DateTime.Now.ToString("yyyyMMddhhmmss") + DateTime.Now.Millisecond;
MyImage.Save(TruePath + "\\" + TrueName + ".jpg", System.Drawing.Imaging.ImageFormat.Gif);
//return "~/images/" + TrueName + ".jpg";
return bm;
}
/// <summary>
/// 数据源是BarChartValue对象的柱状图
/// </summary>
/// <param name="title">大标题</param>
/// <param name="subTitle">小标题</param>
/// <param name="width">图宽</param>
/// <param name="height">图高</param>
/// <param name="Mydata">BarChartValue对象</param>
/// <returns>柱状图路径</returns>
public Image Render(string title, string subTitle, int width, int height, DataSet Mydata)
{
const int SIDE_LENGTH = 900;
const int SIDE_HIGHTH = 400;
const int CHART_TOP = 75;
const int CHART_HEIGHT = 275;
const int CHART_LEFT = 50;
const int CHART_WIDTH = 800;
//计算最高的点
float highPoint = 0;
for (int i = 0; i < Mydata.Tables[0].Rows.Count; i++)
{
if (highPoint < Convert.ToSingle(Mydata.Tables[0].Rows[i]["PickNum"]))
{
highPoint = Convert.ToSingle(Mydata.Tables[0].Rows[i]["PickNum"]);
}
}
//建立一个Graphics对象实例
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
//设置条图图形和文字属性
g.ScaleTransform((Convert.ToSingle(width)) / SIDE_LENGTH, (Convert.ToSingle(height)) / SIDE_HIGHTH);
g.SmoothingMode = SmoothingMode.Default;
g.TextRenderingHint = TextRenderingHint.AntiAlias;
//设定画布和边
g.Clear(Color.White);
g.DrawRectangle(Pens.Black, 0, 0, SIDE_LENGTH - 1, SIDE_HIGHTH - 1);
//画大标题
g.DrawString(title, new Font("Tahoma", 16), Brushes.Black, new PointF(5, 5));
//画小标题
g.DrawString(subTitle, new Font("Tahoma", 9), Brushes.Black, new PointF(7, 35));
//画条形图
float barWidth = CHART_WIDTH / (Mydata.Tables[0].Rows.Count * 2);
PointF barOrigin = new PointF(CHART_LEFT + (barWidth / 2), 0);
float barHeight = Mydata.Tables[0].Rows.Count;
if (Mydata.Tables[0].Rows.Count > 8)
{
for (int i = 0; i < 8; i++)
{
barHeight = 275;//Convert.ToSingle(Mydata.Tables[0].Rows[i]["PickNum"]) * 300 / highPoint * 1;
barOrigin.Y = CHART_TOP + CHART_HEIGHT - barHeight;
//当前柱状图
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(5)), 50 + 100 * (i + 1) - 80, barOrigin.Y + (barHeight - Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100), 60, Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100);
g.DrawString(Mydata.Tables[0].Rows[i]["SamNo"].ToString().Substring(0, 8), new Font("Tahoma", 10), Brushes.Black, new PointF(50 + 100 * (i + 1) - 80, 357));
g.DrawString(Mydata.Tables[0].Rows[i]["SamNo"].ToString().Substring(8), new Font("Tahoma", 10), Brushes.Black, new PointF(50 + 100 * (i + 1) - 84, 370));
barOrigin.X = barOrigin.X + (barWidth * 2);
//显示当前值
g.DrawString(Mydata.Tables[0].Rows[i]["PickNum"].ToString() + "%", new Font("宋体", 16), new SolidBrush(ChartUtil.GetChartItemColor(8)), new PointF(50 + 100 * (i + 1) - 70, barOrigin.Y + (barHeight - Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100) - 20));//
}
}
else
{
for (int i = 0; i < Mydata.Tables[0].Rows.Count; i++)
{
barHeight = 275;//Convert.ToSingle(Mydata.Tables[0].Rows[i]["PickNum"]) * 300 / highPoint * 1;
barOrigin.Y = CHART_TOP + CHART_HEIGHT - barHeight;
//当前柱状图
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(5)), 50 + 100 * (i + 1) - 80, barOrigin.Y + (barHeight - Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100), 60, Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100);
g.DrawString(Mydata.Tables[0].Rows[i]["SamNo"].ToString().Substring(0, 8), new Font("Tahoma", 10), Brushes.Black, new PointF(50 + 100 * (i + 1) - 80, 357));
g.DrawString(Mydata.Tables[0].Rows[i]["SamNo"].ToString().Substring(8), new Font("Tahoma", 10), Brushes.Black, new PointF(50 + 100 * (i + 1) - 84, 370));
barOrigin.X = barOrigin.X + (barWidth * 2);
//显示当前值
g.DrawString(Mydata.Tables[0].Rows[i]["PickNum"].ToString() + "%", new Font("宋体", 16), new SolidBrush(ChartUtil.GetChartItemColor(8)), new PointF(50 + 100 * (i + 1) - 70, barOrigin.Y + (barHeight - Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100) - 20));//
}
}
//设置边
g.DrawString("100%", new Font("宋体", float.Parse("16"), FontStyle.Regular), Brushes.Black, CHART_LEFT, CHART_TOP - 20);
//Y
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT, CHART_TOP), new Point(CHART_LEFT - 8, CHART_TOP + 16));
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT, CHART_TOP), new Point(CHART_LEFT + 8, CHART_TOP + 16));
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT, CHART_TOP), new Point(CHART_LEFT, CHART_TOP + CHART_HEIGHT));
//X
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT, CHART_TOP + CHART_HEIGHT), new Point(CHART_LEFT + CHART_WIDTH, CHART_TOP + CHART_HEIGHT));
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT + CHART_WIDTH, CHART_TOP + CHART_HEIGHT), new Point(CHART_LEFT + CHART_WIDTH - 16, CHART_TOP + CHART_HEIGHT - 8));
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT + CHART_WIDTH, CHART_TOP + CHART_HEIGHT), new Point(CHART_LEFT + CHART_WIDTH - 16, CHART_TOP + CHART_HEIGHT + 8));
//画图例框和文字
//g.DrawRectangle(new Pen(Color.Black, 1), 740, 10, 110, 15);
//画图例
PointF boxOrigin = new PointF(722, 20);
PointF textOrigin1 = new PointF(770, 20);
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(5)), boxOrigin.X, boxOrigin.Y, 40, 20);
g.DrawRectangle(Pens.Black, boxOrigin.X, boxOrigin.Y, 2, 1);
g.DrawString("完成量(%)", new Font("Tahoma", 12), Brushes.Black, textOrigin1);
//输出图形
g.Dispose();
//此处存储路径需要自己改
System.Drawing.Image MyImage = (System.Drawing.Image)bm;
//string TruePath = "C:\\";//System.Web.HttpContext.Current.Server.MapPath("~/images");
//string TrueName = DateTime.Now.ToString("yyyyMMddhhmmss") + DateTime.Now.Millisecond;
//MyImage.Save(TruePath + "\\" + TrueName + ".jpg", System.Drawing.Imaging.ImageFormat.Gif);
//return "~/images/" + TrueName + ".jpg";
return bm;
}
}
/// <summary>
/// 选择颜色
/// </summary>
public class ChartUtil
{
public ChartUtil()
{
}
public static Color GetChartItemColor(int itemIndex)
{
Color selectedColor;
switch (itemIndex)
{
case 0:
selectedColor = Color.AliceBlue;
break;
case 1:
selectedColor = Color.Red;
break;
case 2:
selectedColor = Color.Yellow;
break;
case 3:
selectedColor = Color.AntiqueWhite;
break;
case 4:
selectedColor = Color.Aqua;
break;
case 5:
selectedColor = Color.Aquamarine;
break;
case 6:
selectedColor = Color.Azure;
break;
case 7:
selectedColor = Color.Beige;
break;
case 8:
selectedColor = Color.Black;
break;
case 9:
selectedColor = Color.Brown;
break;
case 10:
selectedColor = Color.Coral;
break;
case 11:
selectedColor = Color.DarkCyan;
break;
case 12:
selectedColor = Color.DarkOrange;
break;
default:
selectedColor = Color.DarkViolet;
break;
}
return selectedColor;
}
}
/// <summary>
/// 饼状图的数据对象
/// </summary>
public class PieChartValue
{
public PieChartValue()
{
}
public PieChartValue(string MyName, int Myvalue)
{
Name = MyName;
MValue = Myvalue;
}
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private int mvalue;
public int MValue
{
get
{
return mvalue;
}
set
{
mvalue = value;
}
}
}
/// <summary>
/// 柱状图的数据对象
/// </summary>
public class BarChartValue
{
public BarChartValue()
{
}
public BarChartValue(string MyName, int Myvalue)
{
Name = MyName;
MValue = Myvalue;
}
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private int mvalue;
public int MValue
{
get
{
return mvalue;
}
set
{
mvalue = value;
}
}
}
{
string strConn = "SERVER=version-server;DATABASE=WMS;UID=WMSAdmin;PWD=admin";
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
string strSql = "SELECT a.SamNo , sum(c.FactNum)*100/sum(c.PlanNum) AS PickNum "
+ " FROM InputPlan a, ASN b, ASNDetail c "
+ " WHERE a.SamNo=b.SamNo And b.ASNCode =c.ASNCode AND a.UseState > 0 AND a.UseState < 3 "
+ " GROUP BY a.SamNo ";
SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);
DataSet ds = new DataSet();
sda.Fill(ds, "ds");
conn.Close();
picBoxPlan.Image = MyImage.Render("收货计划", "按批次", 630, 300, ds);
}
public class DrawGraphClass
public DrawGraphClass()
{
}
/// <summary>
/// 数据源是PieChartValue对象的饼状图
/// </summary>
/// <param name="title">饼状图大标题</param>
/// <param name="subTitle">饼状图小标题</param>
/// <param name="width">图宽</param>
/// <param name="height">图高</param>
/// <param name="Mydata">PieChartValue对象</param>
/// <returns>饼状图路径</returns>
public Image Render(string title, string subTitle, int width, int height, PieChartValue[] Mydata)
{
const int SIDE_LENGTH = 400;
const int PIE_DIAMETER = 200;
//DataTable dt = DataTable;
//通过输入参数,取得饼图中的总基数
float sumData = 0;
for (int i = 0; i < Mydata.Length; i++)
{
sumData += Convert.ToSingle(Mydata[i].MValue);
}
//产生一个image对象,并由此产生一个Graphics对象
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
//设置对象g的属性
g.ScaleTransform((Convert.ToSingle(width)) / SIDE_LENGTH, (Convert.ToSingle(height)) / SIDE_LENGTH);
g.SmoothingMode = SmoothingMode.Default;
g.TextRenderingHint = TextRenderingHint.AntiAlias;
//画布和边的设定
g.Clear(Color.White);
g.DrawRectangle(Pens.Black, 0, 0, SIDE_LENGTH - 1, SIDE_LENGTH - 1);
//画饼图标题
g.DrawString(title, new Font("Tahoma", 14), Brushes.Black, new PointF(5, 5));
//画饼图的图例
g.DrawString(subTitle, new Font("Tahoma", 12), Brushes.Black, new PointF(7, 35));
//画饼图
float curAngle = 0;
float totalAngle = 0;
for (int j = 0; j < Mydata.Length; j++)
{
curAngle = Convert.ToSingle(Mydata[j].MValue) / sumData * 360;
g.FillPie(new SolidBrush(ChartUtil.GetChartItemColor(j)), 100, 65, PIE_DIAMETER, PIE_DIAMETER, totalAngle, curAngle);
g.DrawPie(Pens.Black, 100, 65, PIE_DIAMETER, PIE_DIAMETER, totalAngle, curAngle);
totalAngle += curAngle;
}
//画图例框及其文字
g.DrawRectangle(Pens.Black, 200, 300, 199, 99);
g.DrawString("图表说明", new Font("Tahoma", 12, FontStyle.Bold), Brushes.Black, new PointF(200, 300));
//画图例各项
PointF boxOrigin = new PointF(210, 330);
PointF textOrigin = new PointF(235, 326);
float percent = 0;
for (int k = 0; k < Mydata.Length; k++)
{
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(k)), boxOrigin.X, boxOrigin.Y, 20, 10);
g.DrawRectangle(Pens.Black, boxOrigin.X, boxOrigin.Y, 20, 10);
percent = Convert.ToSingle(Mydata[k].MValue) / sumData * 100;
g.DrawString(Mydata[k].MValue.ToString() + " - " + Mydata[k].Name.ToString() + " (" + percent.ToString("0") + "%)", new Font("Tahoma", 10), Brushes.Black, textOrigin);
boxOrigin.Y += 15;
textOrigin.Y += 15;
}
//回收资源
g.Dispose();
//此处存储路径需要自己改
System.Drawing.Image MyImage = (System.Drawing.Image)bm;
string TruePath = "C:\\"; //System.Web.HttpContext.Current.Server.MapPath("~/images");
string TrueName = DateTime.Now.ToString("yyyyMMddhhmmss") + DateTime.Now.Millisecond;
MyImage.Save(TruePath + "\\" + TrueName + ".jpg", System.Drawing.Imaging.ImageFormat.Gif);
//return "~/images/" + TrueName + ".jpg";
return bm;
}
/// <summary>
/// 数据源是BarChartValue对象的柱状图
/// </summary>
/// <param name="title">大标题</param>
/// <param name="subTitle">小标题</param>
/// <param name="width">图宽</param>
/// <param name="height">图高</param>
/// <param name="Mydata">BarChartValue对象</param>
/// <returns>柱状图路径</returns>
public Image Render(string title, string subTitle, int width, int height, DataSet Mydata)
{
const int SIDE_LENGTH = 900;
const int SIDE_HIGHTH = 400;
const int CHART_TOP = 75;
const int CHART_HEIGHT = 275;
const int CHART_LEFT = 50;
const int CHART_WIDTH = 800;
//计算最高的点
float highPoint = 0;
for (int i = 0; i < Mydata.Tables[0].Rows.Count; i++)
{
if (highPoint < Convert.ToSingle(Mydata.Tables[0].Rows[i]["PickNum"]))
{
highPoint = Convert.ToSingle(Mydata.Tables[0].Rows[i]["PickNum"]);
}
}
//建立一个Graphics对象实例
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
//设置条图图形和文字属性
g.ScaleTransform((Convert.ToSingle(width)) / SIDE_LENGTH, (Convert.ToSingle(height)) / SIDE_HIGHTH);
g.SmoothingMode = SmoothingMode.Default;
g.TextRenderingHint = TextRenderingHint.AntiAlias;
//设定画布和边
g.Clear(Color.White);
g.DrawRectangle(Pens.Black, 0, 0, SIDE_LENGTH - 1, SIDE_HIGHTH - 1);
//画大标题
g.DrawString(title, new Font("Tahoma", 16), Brushes.Black, new PointF(5, 5));
//画小标题
g.DrawString(subTitle, new Font("Tahoma", 9), Brushes.Black, new PointF(7, 35));
//画条形图
float barWidth = CHART_WIDTH / (Mydata.Tables[0].Rows.Count * 2);
PointF barOrigin = new PointF(CHART_LEFT + (barWidth / 2), 0);
float barHeight = Mydata.Tables[0].Rows.Count;
if (Mydata.Tables[0].Rows.Count > 8)
{
for (int i = 0; i < 8; i++)
{
barHeight = 275;//Convert.ToSingle(Mydata.Tables[0].Rows[i]["PickNum"]) * 300 / highPoint * 1;
barOrigin.Y = CHART_TOP + CHART_HEIGHT - barHeight;
//当前柱状图
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(5)), 50 + 100 * (i + 1) - 80, barOrigin.Y + (barHeight - Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100), 60, Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100);
g.DrawString(Mydata.Tables[0].Rows[i]["SamNo"].ToString().Substring(0, 8), new Font("Tahoma", 10), Brushes.Black, new PointF(50 + 100 * (i + 1) - 80, 357));
g.DrawString(Mydata.Tables[0].Rows[i]["SamNo"].ToString().Substring(8), new Font("Tahoma", 10), Brushes.Black, new PointF(50 + 100 * (i + 1) - 84, 370));
barOrigin.X = barOrigin.X + (barWidth * 2);
//显示当前值
g.DrawString(Mydata.Tables[0].Rows[i]["PickNum"].ToString() + "%", new Font("宋体", 16), new SolidBrush(ChartUtil.GetChartItemColor(8)), new PointF(50 + 100 * (i + 1) - 70, barOrigin.Y + (barHeight - Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100) - 20));//
}
}
else
{
for (int i = 0; i < Mydata.Tables[0].Rows.Count; i++)
{
barHeight = 275;//Convert.ToSingle(Mydata.Tables[0].Rows[i]["PickNum"]) * 300 / highPoint * 1;
barOrigin.Y = CHART_TOP + CHART_HEIGHT - barHeight;
//当前柱状图
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(5)), 50 + 100 * (i + 1) - 80, barOrigin.Y + (barHeight - Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100), 60, Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100);
g.DrawString(Mydata.Tables[0].Rows[i]["SamNo"].ToString().Substring(0, 8), new Font("Tahoma", 10), Brushes.Black, new PointF(50 + 100 * (i + 1) - 80, 357));
g.DrawString(Mydata.Tables[0].Rows[i]["SamNo"].ToString().Substring(8), new Font("Tahoma", 10), Brushes.Black, new PointF(50 + 100 * (i + 1) - 84, 370));
barOrigin.X = barOrigin.X + (barWidth * 2);
//显示当前值
g.DrawString(Mydata.Tables[0].Rows[i]["PickNum"].ToString() + "%", new Font("宋体", 16), new SolidBrush(ChartUtil.GetChartItemColor(8)), new PointF(50 + 100 * (i + 1) - 70, barOrigin.Y + (barHeight - Convert.ToInt32(Mydata.Tables[0].Rows[i]["PickNum"].ToString()) * barHeight / 100) - 20));//
}
}
//设置边
g.DrawString("100%", new Font("宋体", float.Parse("16"), FontStyle.Regular), Brushes.Black, CHART_LEFT, CHART_TOP - 20);
//Y
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT, CHART_TOP), new Point(CHART_LEFT - 8, CHART_TOP + 16));
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT, CHART_TOP), new Point(CHART_LEFT + 8, CHART_TOP + 16));
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT, CHART_TOP), new Point(CHART_LEFT, CHART_TOP + CHART_HEIGHT));
//X
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT, CHART_TOP + CHART_HEIGHT), new Point(CHART_LEFT + CHART_WIDTH, CHART_TOP + CHART_HEIGHT));
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT + CHART_WIDTH, CHART_TOP + CHART_HEIGHT), new Point(CHART_LEFT + CHART_WIDTH - 16, CHART_TOP + CHART_HEIGHT - 8));
g.DrawLine(new Pen(Color.Black), new Point(CHART_LEFT + CHART_WIDTH, CHART_TOP + CHART_HEIGHT), new Point(CHART_LEFT + CHART_WIDTH - 16, CHART_TOP + CHART_HEIGHT + 8));
//画图例框和文字
//g.DrawRectangle(new Pen(Color.Black, 1), 740, 10, 110, 15);
//画图例
PointF boxOrigin = new PointF(722, 20);
PointF textOrigin1 = new PointF(770, 20);
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(5)), boxOrigin.X, boxOrigin.Y, 40, 20);
g.DrawRectangle(Pens.Black, boxOrigin.X, boxOrigin.Y, 2, 1);
g.DrawString("完成量(%)", new Font("Tahoma", 12), Brushes.Black, textOrigin1);
//输出图形
g.Dispose();
//此处存储路径需要自己改
System.Drawing.Image MyImage = (System.Drawing.Image)bm;
//string TruePath = "C:\\";//System.Web.HttpContext.Current.Server.MapPath("~/images");
//string TrueName = DateTime.Now.ToString("yyyyMMddhhmmss") + DateTime.Now.Millisecond;
//MyImage.Save(TruePath + "\\" + TrueName + ".jpg", System.Drawing.Imaging.ImageFormat.Gif);
//return "~/images/" + TrueName + ".jpg";
return bm;
}
}
/// <summary>
/// 选择颜色
/// </summary>
public class ChartUtil
{
public ChartUtil()
{
}
public static Color GetChartItemColor(int itemIndex)
{
Color selectedColor;
switch (itemIndex)
{
case 0:
selectedColor = Color.AliceBlue;
break;
case 1:
selectedColor = Color.Red;
break;
case 2:
selectedColor = Color.Yellow;
break;
case 3:
selectedColor = Color.AntiqueWhite;
break;
case 4:
selectedColor = Color.Aqua;
break;
case 5:
selectedColor = Color.Aquamarine;
break;
case 6:
selectedColor = Color.Azure;
break;
case 7:
selectedColor = Color.Beige;
break;
case 8:
selectedColor = Color.Black;
break;
case 9:
selectedColor = Color.Brown;
break;
case 10:
selectedColor = Color.Coral;
break;
case 11:
selectedColor = Color.DarkCyan;
break;
case 12:
selectedColor = Color.DarkOrange;
break;
default:
selectedColor = Color.DarkViolet;
break;
}
return selectedColor;
}
}
/// <summary>
/// 饼状图的数据对象
/// </summary>
public class PieChartValue
{
public PieChartValue()
{
}
public PieChartValue(string MyName, int Myvalue)
{
Name = MyName;
MValue = Myvalue;
}
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private int mvalue;
public int MValue
{
get
{
return mvalue;
}
set
{
mvalue = value;
}
}
}
/// <summary>
/// 柱状图的数据对象
/// </summary>
public class BarChartValue
{
public BarChartValue()
{
}
public BarChartValue(string MyName, int Myvalue)
{
Name = MyName;
MValue = Myvalue;
}
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private int mvalue;
public int MValue
{
get
{
return mvalue;
}
set
{
mvalue = value;
}
}
}