在ASP.NET中动态创建柱状图和饼图[2]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 littlehb 的 blog

好了,我们的代码已经写完,点击“全部保存”按钮,然后按“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 { /// <summary> /// chart 的摘要说明。 /// </summary> 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); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void initializecomponent() { this.load += new system.eventhandler(this.page_load); } #endregion } }

本文关键:在ASP.NET中动态创建柱状图和饼图
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top