用asp.net画饼图
//用asp.net画饼图(可用于各种投票程序) 
//和asp相比asp.net拥有更强大的功能,使用gdi+可以轻易实现以前很多不能办到的图形功能。 
//首先在c:\中建库mess.mdb,并建表title. 
//建二个字段,title(char型),point(int型) 
//非常满意     281 
//比较满意     297 
//还凑合         166 
//不满意         416 
//我还写了画折线图和条形图的部分,目前正在把它们全部写进一个类中。需要的可以和我联系:mailto:ouyang76@263.net 
<%@ Page Language="C#" %> 
<%@import namespace="System.Data"%> 
<%@import namespace="System.Data.OleDb"%> 
<%@import namespace="System.Drawing"%> 
<%@import namespace="System.Drawing.Imaging"%> 
<script language="c#" runat="server"> 
  public void page_load(Object obj,EventArgs e) 

//把连接字串指定为一个常量 
const String strconn = "Provider=Microsoft.Jet.OLEDB.4.0;" +  
                             "Data Source=c:\\mess.mdb"; 
OleDbConnection conn=new OleDbConnection(strconn); 
conn.Open(); 
string sql="select *  from title"; 
OleDbCommand cmd=new OleDbCommand(sql,conn); 
DataSet ds=new DataSet(); 
OleDbDataAdapter adapter1=new OleDbDataAdapter(cmd); 
adapter1.Fill(ds); 
conn.Close(); 
float total=0.0f,tmp; 
int iloop;  
    for(iloop=0;iloop<ds.Tables[0].Rows.Count;iloop++) 
     { 
        tmp=Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]);//转换成单精度,投票不可能投半票。也可写成Convert.ToInt32 
        total+=tmp; 
        } 
//Response.Write(Convert.ToString(total));

Font fontlegend=new Font("verdana",9),fonttitle=new Font("verdana",10,FontStyle.Bold);//设置字体 
//fonttitle为主标题的字体

int width=230;//白色背景宽 
const int bufferspace=15; 
int legendheight=fontlegend.Height*(ds.Tables[0].Rows.Count+1)+bufferspace; 
int titleheight = fonttitle.Height + bufferspace; 
int height = width + legendheight + titleheight + bufferspace;//白色背景高 
int pieheight = width; 
Rectangle pierect=new Rectangle(0,titleheight,width,pieheight);

//加上各种随机色 
ArrayList colors = new ArrayList(); 
Random rnd = new Random(); 
for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++) 
  colors.Add(new SolidBrush(Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255))));

Bitmap objbitmap=new Bitmap(width,height);//创建一个bitmap实例 
//Bitmap objbitmap=new Bitmap(230,500);//创建一个bitmap实例 
Graphics objgraphics=Graphics.FromImage(objbitmap);

objgraphics.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);//画一个白色背景 
objgraphics.FillRectangle(new SolidBrush(Color.LightYellow), pierect);//画一个亮黄色背景 
//以下为画饼图(有几行row画几个) 
float currentdegree=0.0f; 
for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++) 

  objgraphics.FillPie((SolidBrush) colors[iloop], pierect, currentdegree, 
    Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]) / total * 360); 
  currentdegree += Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]) / total * 360; 

//---以下为生成主标题 
SolidBrush blackbrush=new SolidBrush(Color.Black); 
string title="本次《程序员大本营》推出了配套的专刊,您对专刊满意吗?"; 
StringFormat stringFormat = new StringFormat(); 
stringFormat.Alignment = StringAlignment.Center; 
stringFormat.LineAlignment = StringAlignment.Center;

objgraphics.DrawString(title, fonttitle, blackbrush,  
     new Rectangle(0, 0, width, titleheight), stringFormat); 
//列出各字段与得票数 
objgraphics.DrawRectangle(new Pen(Color.Black, 2), 0, height - legendheight, width, legendheight); 
  for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++) 
    { 
      objgraphics.FillRectangle((SolidBrush) colors[iloop], 5, height - legendheight + fontlegend.Height * iloop + 5, 10, 10); 
      objgraphics.DrawString(((String) ds.Tables[0].Rows[iloop]["title"]) + " - " + Convert.ToString(ds.Tables[0].Rows[iloop]["point"]), fontlegend, blackbrush,  
   20, height - legendheight + fontlegend.Height * iloop + 1); 
        } 
// 
objgraphics.DrawString("总票数是:"+Convert.ToString(total),fontlegend,blackbrush, 5, height - fontlegend.Height ); 
//图像总的高度-一行字体的高度,即是最底行的一行字体高度(height - fontlegend.Height ) 
Response.ContentType="image/jpeg"; 
objbitmap.Save(Response.OutputStream,ImageFormat.Jpeg); 
//objbitmap.Save("myyyyyyyyyyy.jpg", ImageFormat.Jpeg);//输出到文件

objgraphics.Dispose(); 
objbitmap.Dispose(); 
  } 
</script>

用asp.net画饼图相关推荐

  1. python画饼图-python使用Matplotlib画饼图

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 函数参数 plt.pie(x, explode=None, labels=None, colors=None, a ...

  2. (转)浅谈HTML5与css3画饼图!

    神马系饼图? 饼图,大家都应该熟知,在统计数据对比方面,几乎处处用到.如cnzz的统计饼图 从饼图中,很形象地展示了访问者地区的分布,以扇形为块的方式拼成一个大圆. 都使用什么方法实现 目前众多站点制 ...

  3. Python高效画饼图

    简述 帮助朋友来做一个画饼图的任务,给了一系列数据,然后画出饼图. 理论上来讲应该是很快速的,而且这个任务也很简单. 但是存在一些小的坑,总是需要我查找以前的做的东西,慢慢填上,耗费了一点时间. 这点 ...

  4. 关于星空的java小程序_[Java教程]小程序使用Canvas画饼图_星空网

    小程序使用Canvas画饼图 2018-10-24 0 先上效果图 -------------------------------------------------------------w --- ...

  5. python画饼图_百度飞桨PaddlePaddle之[Python小白逆袭大神]7天训练营

    第三次参加百度的7天训练营了 这次参加的主题是[Python小白逆袭大神],不过你别看是小白逆势...除非你一开始参加就逆袭完,不然你真的是python小白,这个课程还是有难难度的. 说一下个训练营的 ...

  6. 还在到处寻找画图软件?快来用Typora画饼图、时序图、流程图、UML图和状态图吧

    Markdown是我最喜欢的写作格式,现在我的博客.笔记等都是用markdown格式写的,基础的文字编辑相关的语法用的已经很顺手了,本文就来记录一下用Markdown编辑器画图的方法. 我现在使用一款 ...

  7. Iphone画饼图工具类

    项目中需要画饼图,在此将工具类添出来: h文件: #import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h>@inter ...

  8. cytoscape画饼图

    cytoscape画饼图 数据准备 绘制饼图 数据准备 首先要画饼图,自然是要有节点.以路径图进行举例说明. 要建网络,需要节点和边,cytoscape建网络时,可以在该软件中新建网络,手动输入节点和 ...

  9. 用Echarts2画饼图配置 itemStyle

    首先去百度下载Echarts2,然后引入. 默认的案例够画饼图了,但是我为了去除饼图的指示线和指示名称,所以用了itemStyle. <script type="text/javasc ...

最新文章

  1. Linux中的 inode以及 软硬链接分析
  2. RecyclerView缓存机制(回收些啥?)
  3. Web数据库:信息化持续改善的最佳工具
  4. github 地图上画区域的工程_筑工程测量区别
  5. 网易云terraform实践
  6. (转)GDB 使用方法
  7. 5006.c++类中使用static变量bug
  8. Android Service(二)Service的两种启动方式
  9. 使用js调用dsoframer打开本地文档问题
  10. Java动态代理和静态代理详解
  11. lzg_ad:XPE的发布与部署步骤详解
  12. 老飞飞秒进卡尔贝西龙洞不用走路的方法
  13. ctf misc 学习总结大合集
  14. linux删除每行首字符,vim技巧:删除行首、行末的空白字符,删除空白行
  15. 图的最小生成树-Kruskal算法
  16. 前端Bootstrap框架
  17. LimeSDR mini实现GPS信号接收
  18. 新手卖家如何利用Listing在亚马逊站稳脚跟?
  19. 页面搜索引擎优化技术将提升你的排名
  20. William Nelson Joy

热门文章

  1. 修改Linux网卡由eth1变成eth0
  2. jquery ajax跨域访问webservice配置
  3. data too long for column 'Auser' at row 1
  4. C#操作注册表增删改查及关机能保存问题
  5. Qt设置QWidget背景色4种方法
  6. 深入浅出MFC:DDX_Control本质探究
  7. 如何在C++中调用C程序?
  8. UDP 组播---基本概念
  9. rocketmq 几种队列_这篇进阶必看的RocketMQ,答应我看完好吗?
  10. oracle .ctl 是什么文件_Oracle误删dual表怎么办?这里教你怎么恢复