62,046
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
// 绘制柱形图方法
/// </summary>
public static string BarChar(string title, string subTitle, int width, int height, BarChartValue[] Mydata)
{
const int SIDE_LENGTH = 400;
const int CHART_TOP = 75;
const int CHART_HEIGHT = 200;
const int CHART_LEFT = 50;
const int CHART_WIDTH = 300;
float highPoint = 0;
for (int i = 0; i < Mydata.Length; i++)
{
if (highPoint < Convert.ToSingle(Mydata[i].MValue))
{
highPoint = Convert.ToSingle(Mydata[i].MValue);
}
}
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
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 barWidth = CHART_WIDTH / (Mydata.Length * 2);
PointF barOrigin = new PointF(CHART_LEFT + (barWidth / 2), 0);
float barHeight = Mydata.Length;
for (int i = 0; i < Mydata.Length; i++)
{
barHeight = Convert.ToSingle(Mydata[i].MValue) * 200 / highPoint * 1;
barOrigin.Y = CHART_TOP + CHART_HEIGHT - barHeight;
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i)), barOrigin.X, barOrigin.Y, barWidth + 5, barHeight);
g.DrawString(Mydata[i].Name, new Font("Tahoma",12), Brushes.Black, new PointF(barOrigin.X - 3, 277));
barOrigin.X = barOrigin.X + (barWidth * 2);
}
g.DrawLine(new Pen(Color.Black, 2), new Point(CHART_LEFT, CHART_TOP-45), new Point(CHART_LEFT, CHART_TOP + CHART_HEIGHT));
g.DrawLine(new Pen(Color.Black, 2), new Point(CHART_LEFT, CHART_TOP + CHART_HEIGHT), new Point(CHART_LEFT + CHART_WIDTH, CHART_TOP + CHART_HEIGHT));
g.DrawRectangle(new Pen(Color.Black, 1), 50,300, 299, 110);
g.DrawString("图表说明", new Font("Tahoma", 8, FontStyle.Bold), Brushes.Black, new PointF(5, 290));
PointF boxOrigin = new PointF(60, 310);
PointF textOrigin = new PointF(80, 306);
for (int i = 0; i < Mydata.Length; i++)
{
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i)), boxOrigin.X, boxOrigin.Y, 20, 10);
g.DrawRectangle(Pens.Black, boxOrigin.X, boxOrigin.Y, 2, 1);
g.DrawString(Mydata[i].Name.ToString() + "月份" + " - " + Mydata[i].MValue.ToString("0.00"), new Font("Tahoma", 10), Brushes.Black, textOrigin);
if (i < 5)
{
boxOrigin.Y += 15;
textOrigin.Y += 15;
}
else if (i == 5)
{
boxOrigin.X = 208;
boxOrigin.Y = 310;
textOrigin.X = 230;
textOrigin.Y = 306;
}
else
{
boxOrigin.Y += 15;
textOrigin.Y += 15;
}
}
g.Dispose();
System.Drawing.Image MyImage = (System.Drawing.Image)bm;
string TruePath = 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";
}
}
/// <summary>
///颜色设置
/// </summary>
public class ChartUtil
{
public ChartUtil()
{
}
public static Color GetChartItemColor(int itemIndex)
{
Color selectedColor;
switch (itemIndex)
{
case 0:
selectedColor =Color.YellowGreen;
break;
case 1:
selectedColor = Color.Red;
break;
case 2:
selectedColor = Color.Yellow;
break;
case 3:
selectedColor = Color.PaleVioletRed;
break;
case 4:
selectedColor = Color.Aqua;
break;
case 5:
selectedColor = Color.Aquamarine;
break;
case 6:
selectedColor = Color.Azure;
break;
case 7:
selectedColor = Color.SteelBlue;
break;
case 8:
selectedColor = Color.RoyalBlue;
break;
case 9:
selectedColor = Color.Blue;
break;
case 10:
selectedColor = Color.Coral;
break;
case 11:
selectedColor = Color.DarkCyan;
break;
case 12:
selectedColor = Color.Green;
break;
default:
selectedColor = Color.DarkViolet;
break;
}
return selectedColor;
}
}
/// <summary>
// 饼形图构造函数
/// </summary>
public class Pievalue
{
public Pievalue()
{
}
public Pievalue(string MyName, float Myvalue)
{
Name = MyName;
MValue = Myvalue;
}
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private float mvalue;
public float MValue
{
get
{
return mvalue;
}
set
{
mvalue = value;
}
}
}
/// <summary>
// 柱形图构造函数
/// </summary>
public class BarChartValue
{
public BarChartValue()
{
}
public BarChartValue(string MyName, float Myvalue)
{
Name = MyName;
MValue = Myvalue;
}
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private float mvalue;
public float MValue
{
get
{
return mvalue;
}
set
{
mvalue = value;
}
}
}
/// <summary>
// 绘制柱形图方法
/// </summary>
public static string BarChar(string title, string subTitle, int width, int height, BarChartValue[] Mydata)
{
const int SIDE_LENGTH = 400;
const int CHART_TOP = 75;
const int CHART_HEIGHT = 200;
const int CHART_LEFT = 50;
const int CHART_WIDTH = 300;
float highPoint = 0;
for (int i = 0; i < Mydata.Length; i++)
{
if (highPoint < Convert.ToSingle(Mydata[i].MValue))
{
highPoint = Convert.ToSingle(Mydata[i].MValue);
}
}
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
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 barWidth = CHART_WIDTH / (Mydata.Length * 2);
PointF barOrigin = new PointF(CHART_LEFT + (barWidth / 2), 0);
float barHeight = Mydata.Length;
for (int i = 0; i < Mydata.Length; i++)
{
barHeight = Convert.ToSingle(Mydata[i].MValue) * 200 / highPoint * 1;
barOrigin.Y = CHART_TOP + CHART_HEIGHT - barHeight;
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i)), barOrigin.X, barOrigin.Y, barWidth + 5, barHeight);
g.DrawString(Mydata[i].Name, new Font("Tahoma",12), Brushes.Black, new PointF(barOrigin.X - 3, 277));
barOrigin.X = barOrigin.X + (barWidth * 2);
}
g.DrawLine(new Pen(Color.Black, 2), new Point(CHART_LEFT, CHART_TOP-45), new Point(CHART_LEFT, CHART_TOP + CHART_HEIGHT));
g.DrawLine(new Pen(Color.Black, 2), new Point(CHART_LEFT, CHART_TOP + CHART_HEIGHT), new Point(CHART_LEFT + CHART_WIDTH, CHART_TOP + CHART_HEIGHT));
g.DrawRectangle(new Pen(Color.Black, 1), 50,300, 299, 110);
g.DrawString("图表说明", new Font("Tahoma", 8, FontStyle.Bold), Brushes.Black, new PointF(5, 290));
PointF boxOrigin = new PointF(60, 310);
PointF textOrigin = new PointF(80, 306);
for (int i = 0; i < Mydata.Length; i++)
{
g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i)), boxOrigin.X, boxOrigin.Y, 20, 10);
g.DrawRectangle(Pens.Black, boxOrigin.X, boxOrigin.Y, 2, 1);
g.DrawString(Mydata[i].Name.ToString() + "月份" + " - " + Mydata[i].MValue.ToString("0.00"), new Font("Tahoma", 10), Brushes.Black, textOrigin);
if (i < 5)
{
boxOrigin.Y += 15;
textOrigin.Y += 15;
}
else if (i == 5)
{
boxOrigin.X = 208;
boxOrigin.Y = 310;
textOrigin.X = 230;
textOrigin.Y = 306;
}
else
{
boxOrigin.Y += 15;
textOrigin.Y += 15;
}
}
g.Dispose();
System.Drawing.Image MyImage = (System.Drawing.Image)bm;
string TruePath = 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";
}
}
/// <summary>
///颜色设置
/// </summary>
public class ChartUtil
{
public ChartUtil()
{
}
public static Color GetChartItemColor(int itemIndex)
{
Color selectedColor;
switch (itemIndex)
{
case 0:
selectedColor =Color.YellowGreen;
break;
case 1:
selectedColor = Color.Red;
break;
case 2:
selectedColor = Color.Yellow;
break;
case 3:
selectedColor = Color.PaleVioletRed;
break;
case 4:
selectedColor = Color.Aqua;
break;
case 5:
selectedColor = Color.Aquamarine;
break;
case 6:
selectedColor = Color.Azure;
break;
case 7:
selectedColor = Color.SteelBlue;
break;
case 8:
selectedColor = Color.RoyalBlue;
break;
case 9:
selectedColor = Color.Blue;
break;
case 10:
selectedColor = Color.Coral;
break;
case 11:
selectedColor = Color.DarkCyan;
break;
case 12:
selectedColor = Color.Green;
break;
default:
selectedColor = Color.DarkViolet;
break;
}
return selectedColor;
}
}
/// <summary>
// 饼形图构造函数
/// </summary>
public class Pievalue
{
public Pievalue()
{
}
public Pievalue(string MyName, float Myvalue)
{
Name = MyName;
MValue = Myvalue;
}
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private float mvalue;
public float MValue
{
get
{
return mvalue;
}
set
{
mvalue = value;
}
}
}
/// <summary>
// 柱形图构造函数
/// </summary>
public class BarChartValue
{
public BarChartValue()
{
}
public BarChartValue(string MyName, float Myvalue)
{
Name = MyName;
MValue = Myvalue;
}
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private float mvalue;
public float MValue
{
get
{
return mvalue;
}
set
{
mvalue = value;
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing;
using System.Drawing.Design;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;
namespace AspNet.GDI
{
/// <summary>
// GDI绘图类
/// </summary>
public class GDIpictrue
{
public GDIpictrue()
{
}
/// <summary>
// 绘制饼形图方法
/// </summary>
public static string pievalue(string title, string subTitle, int width, int height, Pievalue[] Mydata)
{
const int SIDE_LENGTH = 400;
const int PIE_DIAMETER = 200;
float sumData = 0;
for (int i = 0; i < Mydata.Length; i++)
{
sumData += Convert.ToSingle(Mydata[i].MValue);
}
Bitmap bm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bm);
g.Clear(Color.White);
g.DrawRectangle(Pens.Black,0,0, SIDE_LENGTH -50, SIDE_LENGTH -1);
g.DrawString(title, new Font("Tahoma", 12), 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, 55, PIE_DIAMETER, PIE_DIAMETER, totalAngle, curAngle);
g.DrawPie(Pens.Black, 100, 55, PIE_DIAMETER, PIE_DIAMETER, totalAngle, curAngle);
totalAngle += curAngle;
}
g.DrawRectangle(Pens.Black, 350, 90, 399, 299);
g.DrawString("图表说明", new Font("Tahoma", 12, FontStyle.Bold), Brushes.Black, new PointF(350,70));
PointF boxOrigin = new PointF(360,100);
PointF textOrigin = new PointF(385, 96);
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("0.00") + " - " + Mydata[k].Name.ToString() + " (" + percent.ToString("0.00") + "%)", new Font("Tahoma", 12), Brushes.Black, textOrigin);
boxOrigin.Y += 15;
textOrigin.Y += 15;
}
g.Dispose();
System.Drawing.Image MyImage = (System.Drawing.Image)bm;
string TruePath = 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";
}
}