在ASP.NET中动态创建柱状图和饼图[2]
[入库:2005年8月18日] [更新:2007年3月25日]
好了,我们的代码已经写完,点击“全部保存”按钮,然后按“f5”执行,看看最好的结果。如果没有错误的话,您将会看到如下的结果:

值得说明的是,上面只是简单地示例了如何利用.net 框架类库中的图形类创建简单的图形,但.net 框架类库中还提供了更高级的二维和矢量图形功能,利用这些高级功能,我们可以创建出二维或矢量的图形,那时,我们的图形看起来会更加形象。
本文所有代码在简体中文windows 2000 + .net framework 1.0(英文正式版)+ .net framework sp1和windows xp + .net framework 1.0(中文版)下调试通过。
c#代码
using system;
using system.collections;
using system.componentmodel;
using system.data;
using system.drawing;
using system.web;
using system.web.sessionstate;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.htmlcontrols;
using system.drawing.imaging;
namespace emeng.exam
{
///
/// chart 的摘要说明。
///
public class chart : system.web.ui.page
{
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
bitmap objbitmap = new bitmap(400, 200);
graphics objgraphics;
objgraphics = graphics.fromimage(objbitmap);
objgraphics.clear(color.white);
int[] arrvalues = {100,135,115,125,75,120};
string[] arrvaluenames = new string[]{"一月","二月","三月","四月","五月","六月"};
objgraphics.drawstring(" x 公司上半年销售情况",
new font("宋体", 16), brushes.black, new pointf(5, 5));
pointf symbolleg = new pointf(335, 20);
pointf descleg = new pointf(360, 16);
for (int i = 0; i < arrvaluenames.length; i++)
{
objgraphics.fillrectangle(new solidbrush(getcolor(i)), symbolleg.x, symbolleg.y, 20, 10);
objgraphics.drawrectangle(pens.black, symbolleg.x, symbolleg.y, 20, 10);
objgraphics.drawstring(arrvaluenames[i].tostring(), new font("宋体", 10), brushes.black, descleg);
symbolleg.y += 15;
descleg.y += 15;
}
for (int i = 0; i < arrvalues.length; i++)
{
objgraphics.fillrectangle(new solidbrush(getcolor(i)), (i * 35) + 15, 200 - arrvalues[i], 20,
arrvalues[i] + 5);
objgraphics.drawrectangle(pens.black, (i * 35) + 15, 200 - arrvalues[i], 20, arrvalues[i] + 5);
}
float sglcurrentangle = 0;
float sgltotalangle = 0;
float sgltotalvalues = 0;
for (int i = 0; i <= arrvalues.length - 1; i++)
{
sgltotalvalues += arrvalues[i];
}
for (int i = 0; i < arrvalues.length; i++)
{
sglcurrentangle = arrvalues[i] / sgltotalvalues * 360;
objgraphics.fillpie(new solidbrush(getcolor(i)), 220, 95, 100, 100, sgltotalangle, sglcurrentangle);
objgraphics.drawpie(pens.black, 220, 95, 100, 100, sgltotalangle, sglcurrentangle);
sgltotalangle += sglcurrentangle;
}
objbitmap.save(response.outputstream, imageformat.gif);
}
private color getcolor(int itemindex)
{
color objcolor;
if (itemindex == 0)
{
objcolor = color.blue;
}
else if (itemindex == 1)
{
objcolor = color.red;
}
else if (itemindex == 2)
{
objcolor = color.yellow;
}
else if (itemindex == 3)
{
objcolor = color.purple;
}
else if (itemindex == 4)
{
objcolor = color.orange;
}
else if (itemindex == 5)
{
objcolor = color.brown;
}
else if (itemindex == 6)
{
objcolor = color.gray;
}
else if (itemindex == 7)
{
objcolor = color.maroon;
}
else if (itemindex == 8)
{
objcolor = color.maroon;
}
else
{
objcolor = color.blue;
}
return objcolor;
}
#region web 窗体设计器生成的代码
override protected void oninit(eventargs e)
{
//
// codegen: 该调用是 asp.net web 窗体设计器所必需的。
//
initializecomponent();
base.oninit(e);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void initializecomponent()
{
this.load += new system.eventhandler(this.page_load);
}
#endregion
}
}
本文关键:在ASP.NET中动态创建柱状图和饼图
本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)