既然在学习GDI+今天就乘胜追击,顺便研究了一下饼形图的实现,具体的效果和代码如下,新学习的知识,在这里留一个笔记吧算是。

数据库字段及数据如下:

最终呈现效果如下:

接下来,就不用我说了,赤裸裸的源码奉上,大家也不用矜持啦。

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.Data.SqlClient;
using System.Drawing ;
using System.Drawing.Drawing2D ;
using System.Collections;public partial class _Default : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){CreateImage();}private void CreateImage(){//把连接字串指定为一个常量SqlConnection Con = new SqlConnection("server=QH-20150804WJPO;uid=sa;pwd=123;database=Xianxian");Con.Open();string cmdtxt = "select *  from tb_12";//SqlCommand Com = new SqlCommand(cmdtxt, Con);DataSet ds = new DataSet();SqlDataAdapter Da = new SqlDataAdapter(cmdtxt, Con);Da.Fill(ds);Con.Close();float Total = 0.0f, Tmp;for (int i = 0; i < ds.Tables[0].Rows.Count; i++){//转换成单精度。也可写成Convert.ToInt32Tmp = Convert.ToSingle(ds.Tables[0].Rows[i]["Quantity"]);Total += Tmp;}//设置字体,fonttitle为主标题的字体Font fontlegend = new Font("verdana", 9);Font fonttitle = new Font("verdana", 10, FontStyle.Bold);//背景宽int width = 230;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 (int i = 0; i < ds.Tables[0].Rows.Count; i++)colors.Add(new SolidBrush(Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255))));//创建一个bitmap实例Bitmap objbitmap = new Bitmap(width, height);Graphics objgraphics = Graphics.FromImage(objbitmap);//画一个白色背景objgraphics.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);//画一个亮黄色背景      objgraphics.FillRectangle(new SolidBrush(Color.Beige), pierect);//以下为画饼图(有几行row画几个)float currentdegree = 0.0f;for (int i = 0; i < ds.Tables[0].Rows.Count; i++){objgraphics.FillPie((SolidBrush)colors[i], pierect, currentdegree,Convert.ToSingle(ds.Tables[0].Rows[i]["Quantity"]) / Total * 360);currentdegree += Convert.ToSingle(ds.Tables[0].Rows[i]["Quantity"]) / 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 (int i = 0; i < ds.Tables[0].Rows.Count; i++){objgraphics.FillRectangle((SolidBrush)colors[i], 5, height - legendheight + fontlegend.Height * i + 5, 10, 10);objgraphics.DrawString(((String)ds.Tables[0].Rows[i]["BookKind"]) + " —— " + Convert.ToString(Convert.ToSingle(ds.Tables[0].Rows[i]["Quantity"]) * 100 / Total).Substring(0, 5) + "%", fontlegend, blackbrush,20, height - legendheight + fontlegend.Height * i + 1);}//图像总的高度-一行字体的高度,即是最底行的一行字体高度(height - fontlegend.Height )objgraphics.DrawString("图书销售总数:" + Convert.ToString(Total) + "万本", fontlegend, blackbrush, 5, height - fontlegend.Height);Response.ContentType = "image/Jpeg";objbitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);objgraphics.Dispose();objbitmap.Dispose();}
}

之前总是想着,自己一定要变得非常好,给家人最好的温情,后来吧,这份心情倒是没变,激情却没了。以前总觉得自己可以很棒,可以到处闯一闯,现在真的有点后悔离家那么远,不在父母的身边。人多的时候,感觉很落寞,人少的时候也落寞。最近心情总是忽阴忽晴,顿时感悟肆意,乱七八糟的,我也不知道我到底想要说什么,反正就是很乏很倦,睡觉会做恶梦,吃饭后还是觉得很饿,前一秒说完喜欢你,后一秒就担心我们将有变坏的关系。。。

.NET网页显示饼形图相关推荐

  1. Android的WebView控件载入网页显示速度慢的究极解决方案

    Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] Android客户端中混搭HTML页面,会出现虽然H ...

  2. 关于网页显示乱码问题的一些个人见解(PHP、JSP...)

    最近做项目,遇到了一些网页显示乱码的情况,在网上查了很多资料都没有给一个全面的准确的答案,自己摸索了一下经过对比开发环境(我使用的是Myeclipse)编辑器的编码和浏览器默认显示的编码发现,在字符编 ...

  3. 从你输入一个网址,到网页显示,其间发生了什么?

    来源:小林coding 想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题. 这次,小林我带大家一起探究下,一个数据包在网络中的心路历程. 每个阶段都有数据包的「心路 ...

  4. 当输入 xxxxHub 后,到网页显示,其间发生了什么?

    来源:小林coding 想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题. 这次,小林我带大家一起探究下,一个数据包在网络中的心路历程. 每个阶段都有数据包的「心路 ...

  5. win7php网页显示空白,win7系统ie11打开网页显示空白的解决方法

    ‍‍ 有很多使用ie11浏览器的win7 32位系统的用户最近遇到了网页打不开的问题,准确说是二级网页不开.比如在hao123主页中进入百度.腾讯等其他网站时打开的的网页显示空白,这究竟是怎么回事呢? ...

  6. js 实现网页显示倒计时

    用 js 来实现网页显示倒计时效果 1 function checkTime( time ){ 2 var data = new Data(); // 获取现在时间 3 var nowData = d ...

  7. Win7旗舰版系统网页显示不全怎么办

    大家在使用IE浏览器浏览网页时,偶尔会出现网页显示不正常或者页面显示不全的问题,不知道是网络的问题还是什么.那么Win7旗舰版系统网页显示不全怎么办?就此问题,小编就给大家整理一下关于win7旗舰版网 ...

  8. 由“从按下回车到网页显示”粗谈网页优化

    图为百度console.log中的信息. 注 水平有限.望批评指正. 前言 从開始做uikoo9.com開始,一直想怎怎么优化,版本号也一直在迭代. 如今最终有点雏形.近期開始思考怎么能让一个网页最快 ...

  9. 网页显示不全的原因css,css 页面显示不全怎么办

    css页面显示不全的解决办法:1.取消css中对象的高度css样式:2.减少内容:3.在设置高度和宽度的同时再设置"overflow:hidden"属性样式. 本教程操作环境:wi ...

最新文章

  1. 【GDOI2016模拟3.11】历史
  2. Mac关于Node版本升降
  3. 深入了解DefaultMessageListenerContainer
  4. Web Services 详解
  5. 页面 渲染 回流 测试 笔记
  6. jvm内存分配与收回策略
  7. 使用grep4j轻松测试分布式组件上的SLA
  8. Python 爬虫进阶五之多线程的用法
  9. scrapy ip地址 tcp time out_TCP的运作流程(一)——“三次握手”
  10. react新生命周期
  11. 苹果电脑修改hosts文件方法介绍!mac的hosts文件位置在哪?
  12. 视频教程- Docker入门与进阶实战(上)-Docker/K8S
  13. 传智播客python培训视频教程下载
  14. java立方根怎么打_计算机上怎么打立方根
  15. 百度地图SDK for Android【覆盖物】
  16. 测试学习——性能测试(一)
  17. JDP-[单例模式]-思路梳理
  18. 学生认证免费领取——使用阿里云服务器的Ubuntu版本,并进行图形化
  19. SuperMap GIS的TIN地形数据优化
  20. (插件)程序员摸鱼神器,上班也可以在VSCode看股票 基金实时数据

热门文章

  1. React父组件调用子组件的方法【class组件和函数组件】
  2. python图像切割成多边形_python通过opencv实现图片裁剪原理解析
  3. Java WEB练习
  4. 【js语法】获取星期 new Date().getDay()
  5. 用计算机创造一个宇宙,人工智能令整个宇宙变成一个玄计算机,宇宙是虚拟的,真实世界...
  6. 【面试题】有一个数组,每隔两个数删掉一个数,到末尾又循环到开头继续进行,求最后一个被删除的数的原始下标位置
  7. 三方支付四方支付聚合支付系统 集成 支付宝分账 代付 多商户 短信邮件 谷歌令牌验证
  8. 技术分享 | gh-ost 在线 ddl 变更工具​
  9. “书法字”“一”的理解
  10. CiteSpace知识图谱