追逐梦想的猪

人生因为有梦想而精彩!

导航

如何在ASP.NET实现数据图表

        今天看了一篇文章,内容就是如何在ASP.NET实现数据图表,首先说明了如何创建一个简单的图;其次再说明了如何在创建的图上画线(line)和写字。要实现以上这些功能,我们必须引入以下几个命名空间:System.Drawing、System.Drawing.Drawing2D、System.Drawing.Imaging。

        一、先说一下如何在一个页面上创建一个简单的图。
            首先,我们需要实例化一个Bitmap对象
            Bitmap image = new Bitmap(400,400);     //两个参数分别是图片的width和height
            
            之后,利用类GraphicsFromImage()方法把之前实例化的Bitmap对象image作为参数传递给它,生成一个Graphics对象g;
            Graphics g= Graphics.FromImage(image);
            之后就可以调用g的FillEllipse、FillRectangle、FillPie等方法,为图片设置背景色、各个点的坐标位置等
            g.FillEllipse(new SolidBrush(Color.Yellow),0,0,400,400);
            g.FillPie(new SolidBrush(Color.Red),2,2,200,200,0,77);//画一个扇形,填充为红色。。。

           最后,我们利用image对象的Save()方法将该图片输出到客户端浏览器显示
            //以"Jpeg"格式保存此图片对象,在客户端显示出来
             image.Save(Response.OutputStream,ImageFormat.Jpeg);
        
            这样,一个单一的图片就生成了。

            二、如何在图片上画其他图像(比如线、字、椭圆、矩形等等)
               1、首先,自定义字体Font f = new Font( 参数列表),可以有很多种不同的重载方法,比如
                        Font f = new Font("宋体",20);          //定义字体为宋体,字体大小为20

               2、 之后,定义画笔 Pen penName = new Pen(参数列表),可以定义不同颜色、不同宽度的画笔。
                        Pen redPen = new Pen(Color.Red);       //定义红色画笔
                        Pen bluePen = new Pen(new SolidBrush(Color.Blue),4);    //定义蓝色画笔,画笔画出的线宽度为4

               3、可以调用上面Graphics对象g的各种Draw*方法,如DrawLine(画线)、DrawString(写字)等方法,实现自己需要的功能;比如:
                    g.DrawLine(redPen,200,200,250,100);         //用redPen画一条线,起始坐标分别为(200,200)和(250,100)
                    g.DrawRectangle(bluePen,40,40,250,200);   //用bluePen画一个矩形,左上角坐标为(40,40),矩形的宽度和高度分别为250和200
                    g.DrawString("你好吗?", f, new SolidBrush(Color.Yellow), 50, 50);  //写"你好吗?",字体为f,从(50,50)处开始写

               4、最后,再利用image对象的Save()方法将该图片输出到客户端浏览器显示
                //以"Jpeg"格式保存此图片对象,在客户端显示出来
                 image.Save(Response.OutputStream,ImageFormat.Jpeg);

            三、以上代码画出的效果如下:




                这只是关于System.Drawing命名空间下部分类的简单应用。应用该类还可以做出各种各样的形象、直观的图形,比如饼图、各种对比分析图等等。所以有待于进一步的熟悉以及很好的实践,才可以更好的掌握好这个功能。.Net将各种类封装的很好,我们现在只是利用它们提供的接口来进行应用上的开发;有兴趣的,也可以对底层的一些实现进行研究,应该也是很有意思的吧,呵呵

                自己本身不是高手,只是记录一些自己学习的东西;如果觉得简单,也希望大家一笑置之。



           



posted on 2006-01-10 23:00  Ann  阅读(373)  评论(0编辑  收藏  举报