`

C# 画圆饼分析图

    博客分类:
  • .Net
阅读更多

Code:

using System;
using System.Drawing;


    namespace aa    {
        public class Pie
        {
            private Graphics objGraphics; //Graphics 类提供将对象绘制到显示设备的方法
            private Bitmap objBitmap; //位图对象

            private int m_Width = 700; //图像宽度
            private int m_Height = 400; //图像高度
            private string m_Title = "";
            private string m_Unit = "百分比";
            //键
            private string[] m_Keys = new string[]{"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
            //值
            private float[] m_Values = new float[]{21.5f,36.2f,48.7f,55.4f,21.6f,12.8f,99.5f,36.4f,78.2f,56.4f,45.8f,66.4f};
            private Color m_BgColor = Color.Snow; //背景
            private Color m_TextColor = Color.Black; //文字颜色
            private Color m_BorderColor = Color.Black; //整体边框颜色
            //Pie颜色数组
            private Color[] m_PieColor = new Color[]{Color.Green,Color.Red,Color.Yellow,Color.Blue,Color.Orange,Color.Aqua,Color.SkyBlue,Color.DeepPink,Color.Azure,Color.Brown};

            public int Width
            {
                set
                {
                    if(value < 300)
                    {
                        m_Width = 300;
                    }
                    else
                    {
                        m_Width = value;
                    }
                }
                get
                {
                    return m_Width;
                }
            }

            public int Height
            {
                set
                {
                    if(value < 300)
                    {
                        m_Height = 300;
                    }
                    else
                    {
                        m_Height = value;
                    }
                }
                get
                {
                    return m_Height;
                }
            }

            public string Title
            {
                set
                {
                    m_Title  = value;
                }
                get
                {
                    return m_Title;
                }
            }

            public string Unit
            {
                set
                {
                    m_Unit = value;
                }
                get
                {
                    return m_Unit;
                }
            }

            public string[] Keys
            {
                set
                {
                    m_Keys = value;
                }
                get
                {
                    return m_Keys;
                }
            }

            public float[] Values
            {
                set
                {
                    m_Values = value;
                }
                get
                {
                    return m_Values;
                }
            }

            public Color BgColor
            {
                set
                {
                    m_BgColor = value;
                }
                get
                {
                    return m_BgColor;
                }
            }

            public Color TextColor
            {
                set
                {
                    m_TextColor = value;
                }
                get
                {
                    return m_TextColor;
                }
            }

            public Color BorderColor
            {
                set
                {
                    m_BorderColor = value;
                }
                get
                {
                    return m_BorderColor;
                }
            }

            public Color[] PieColor
            {
                set
                {
                    m_PieColor = value;
                }
                get
                {
                    return m_PieColor;
                }
            }

            private Color GetColor(int i) //分配各Pie的颜色
            {
                try
                {
                    if( 0 < i && i < PieColor.Length )
                    {
                        return PieColor[i];
                    }
                    else if( i >= PieColor.Length )
                    {
                        int j = i % PieColor.Length;
                        return PieColor[j];
                    }
                    else
                    {
                        return Color.Green;
                    }
                }
                catch
                {
                    return Color.Green;
                }
            }

            //生成图像并返回bmp图像对象
            public Bitmap CreateImage()
            {
                InitializeGraph();

                DrawRight(ref objGraphics);

                DrawContent(ref objGraphics);

                return objBitmap;
            }

            //初始化和填充图像区域,画出边框,初始标题
            private void InitializeGraph()
            {
            
                //根据给定的高度和宽度创建一个位图图像
                objBitmap = new Bitmap(Width,Height);

                //从指定的 objBitmap 对象创建 objGraphics 对象 (即在objBitmap对象中画图)
                objGraphics = Graphics.FromImage(objBitmap);

                //根据给定颜色(LightGray)填充图像的矩形区域 (背景)
                objGraphics.DrawRectangle(new Pen(BorderColor,1),0,0,Width,Height);
                objGraphics.FillRectangle(new SolidBrush(BgColor),1,1,Width-2,Height-2);

                //初始化标题
                CreateTitle(ref objGraphics);
            }

            //初始化右边说明部分
            private void DrawRight(ref Graphics objGraphics)
            {
                objGraphics.DrawString(String.Format("单位:{0}",Unit),new Font("宋体",10),new SolidBrush(TextColor),Width-95,30);

                Point KeysPoint = new Point(Width-120,50);
                Point KeysTextPoint = new Point(Width-90,50);
                for(int i=0;i < Keys.Length;i++)
                {
                    objGraphics.DrawRectangle(new Pen(BorderColor,1),KeysPoint.X,KeysPoint.Y,21,11);
                    objGraphics.FillRectangle(new SolidBrush(GetColor(i)),KeysPoint.X,KeysPoint.Y,20,10);
                    objGraphics.DrawString(String.Format("{0} {1}",Keys[i],Values[i]),new Font("宋体",10),new SolidBrush(TextColor),KeysTextPoint);
                    KeysPoint.Y +=15;
                    KeysTextPoint.Y += 15;
                }
            }

            private void DrawContent(ref Graphics objGraphics)
            {
                float Sum = 0;
                float StartAngle = 0;
                float SweepAngle = 0;
                float CircleHeight = 0;
                float CircleX = 0;
                float CircleY = 0;

                for(int i=0;i<Values.Length;i++)
                {
                    Sum += Values[i];
                }
                if(Width > Height)
                {
                    CircleHeight = Height - 100;
                }
                else
                {
                    CircleHeight = Width - 150;
                }
                CircleX = (Width - 150)/2 - CircleHeight/2;
                CircleY = Height - 50 - CircleHeight;
                for(int i=0;i<Values.Length;i++)
                {
                    SweepAngle = (Values[i]/Sum)*360;
                    objGraphics.DrawPie (new Pen(BorderColor,1),CircleX,CircleY,CircleHeight,CircleHeight,StartAngle,SweepAngle);
                    objGraphics.FillPie (new SolidBrush(GetColor(i)),CircleX,CircleY,CircleHeight,CircleHeight,StartAngle,SweepAngle);
                    StartAngle += SweepAngle;
                }
            }

            //初始化标题
            private void CreateTitle(ref Graphics objGraphics)
            {
                objGraphics.DrawString(Title,new Font("宋体",16),new SolidBrush(TextColor),new Point(5,5));
            }
        }
    }

 

 

 调用:

Pie pie = new Pie(); //定义一个画图类实例
            DataTable dt = ssih.GetList("1=1 order by dataDate desc");
            string[] kzKeys = {"看多","看平","看空"};
            pie.Keys = kzKeys;
            float[] kzValues = {float.Parse(Convert.ToString(Convert.ToDouble(dt.Rows[0]["zxyc1"].ToString())*100)),float.Parse(Convert.ToString(Convert.ToDouble(dt.Rows[0]["zxyc2"].ToString())*100)),float.Parse(Convert.ToString(Convert.ToDouble(dt.Rows[0]["zxyc3"].ToString())*100))};
            pie.Values = kzValues;
            Bitmap bmp = pie.CreateImage();
            bmp.Save(@"D:\work\cnqsq\Pie.jpg",ImageFormat.Jpeg);
//D:\work\cnqsq\Pie.jpg此目录要有asp_net写入的权限
 

 

 

分享到:
评论

相关推荐

    PHP 画圆饼 class

    PHP 画圆饼 class,只要初始化数据,就可以画出很好看的圆饼图像...

    flash统计图- flash柱形图- flash圆饼图- flash折线图 多款flash统计图动画

    本资源包含多款基于Flash的统计图动画,包括柱形图、圆饼图和折线图,这些都是数据分析和展示中常见的图表类型。以下是这些图表的相关知识点: 1. Flash统计图:Flash是一种交互式矢量图形和多媒体平台,它允许开发...

    带有动画效果的圆饼图

    通过分析和学习这个示例,你可以了解如何创建一个具有动画效果和触摸滑动的圆饼图。 总的来说,掌握如何创建带有动画效果的圆饼图是一项实用的技能,它可以帮助你在数据可视化领域更进一步。无论是在网页设计、数据...

    C# 控件Chart的 圆饼图百分比

    1. 开发环境: 基于 VS2019 基于C#语言 ... 用C# 控件Chart 画出 圆饼图百分比,很直观 3、源代码解释地址: https://blog.csdn.net/hgaohr1021/article/details/129023432?spm=1001.2014.3001.5502

    js柱形图圆饼折线图

    本话题主要探讨如何使用JavaScript来创建柱形图、圆饼图和折线图。这些图表可以帮助我们直观地展示复杂数据,使用户更容易理解。下面将详细介绍这三种图表的实现方法。 首先,柱形图是一种常见的统计图表,用于比较...

    C# Html5 + jquery 绘制动态圆饼图

    1. **创建C#后端**:使用ASP.NET MVC或Web API创建一个C#控制器,该控制器应包含一个API端点,用于返回圆饼图所需的数据。这些数据可以来自数据库或其他数据源,并以JSON格式响应。 2. **HTML5页面布局**:创建一个...

    仿支付宝的圆饼统计表

    圆饼图是一种常见且直观的统计图表,常用于表示整体与各部分之间的比例关系。下面我们将深入探讨圆饼图的实现、GreenDao数据库框架以及AES加密技术。 1. **圆饼图的实现**: 圆饼图通常由一个圆形和多个扇形区域...

    C# 动态显示磁盘容量圆饼图表

    内容索引:C#源码,系统相关,磁盘,图表,圆饼图 C# 先检测出指定磁盘的容量,然后根据已使用情况动态生成圆饼图表,就像Windows磁盘属性内的图表一样,直观简洁。你知道用C#如何生成类似图表吗?你会从本示例程序中...

    圆饼图中心为空白的demo

    在数据分析和可视化领域,圆饼图是一种常用的图表类型,它以圆形的方式展示各项比例关系,易于理解且视觉效果直观。本教程将详细讲解如何创建一个圆饼图,特别是在圆饼图中心留白的实现方法,以及如何根据需求自定义...

    仿Squawka自定义圆饼图、扇形图

    "仿Squawka自定义圆饼图、扇形图"是一个项目,旨在提供一种方式来创建类似Squawka网站的图表效果。Squawka是一家知名的体育数据分析网站,其使用的图表通常具有高度定制化和视觉吸引力。以下将详细讲解如何制作此类...

    Jquery根据table提供的数据画折线图,柱状图,圆饼图。

    本示例中的"Jquery根据table提供的数据画折线图,柱状图,圆饼图"是一个利用jQuery来实现动态图表生成的应用。接下来,我们将详细讨论如何使用jQuery以及可能涉及的相关技术来创建这些图表。 首先,jQuery是一个...

    C# 先检测出指定磁盘的容量,然后根据已使用情况动态生成圆饼图表,就像Windows磁盘属性内的图表一样,直观简洁。你知道用C#如何生成类似图表吗?你会从本示例程序中得到答案。

    在C#编程中,生成一个类似Windows磁盘属性中的圆饼图表来显示磁盘容量和使用情况是一项常见的任务。这通常涉及到对操作系统API的调用,以及利用图形库来绘制图表。下面,我们将深入探讨如何实现这个功能。 首先,...

    安卓图表报表相关-带有动画效果的圆饼图切支持触摸滑动!操作简单效果华丽.zip

    圆饼图作为一种常见的数据可视化方式,能够直观地展示各个部分与整体的关系,尤其在数据分析、统计报告中被广泛应用。"安卓图表报表相关-带有动画效果的圆饼图切支持触摸滑动!操作简单效果华丽.zip"这个压缩包中,...

    excel圆饼图怎么做?.docx

    在当今信息时代,数据可视化成为一种有效的手段,帮助人们更直观地理解和分析复杂的数据信息。...通过本文的介绍,相信读者已经能够掌握如何在Excel中创建和应用圆饼图,从而在工作和学习中更加高效地处理和分析数据。

    TFTLCD彩屏液晶驱动(二)画点、画线、画圆.pdf

    本文档作为TFTLCD彩屏液晶驱动系列教程的第二部分,将深入介绍如何通过编程实现画点、画线以及画圆等基本图形绘制操作。 文档的开篇,便引入了关键的头文件lcd.h,这一步骤对于理解后续代码至关重要。lcd.h头文件...

    achartEngine折线图和圆饼图的demo

    在Android应用中,圆饼图常用于数据分析、统计报告或资源分配情况的展示。AChartEngine的圆饼图功能允许开发者指定各个扇区的值和颜色,同时可以添加标签和百分比显示。在提供的示例中,开发者可以学习如何构造数据...

    柱状图 圆饼图 曲线图 struts2.0 jfreechart

    JFreeChart则是一个强大的Java图表库,能够生成多种类型的图表,包括柱状图、圆饼图和曲线图,非常适合在数据可视化应用中使用。在Struts2.0中集成JFreeChart,可以为Web应用程序添加丰富的图形展示功能,让数据以...

    圆饼图动画

    "圆饼图动画"是一种常见的数据可视化技术,尤其适用于展示各项数据的比例关系。在这个主题下,我们将深入探讨如何实现一个可点击转动和滑动转动的圆饼图,以及如何通过这种方式来分类显示数据,同时营造出酷炫的视觉...

    圆饼柱状图PPT模板免费.pptx

    圆饼柱状图PPT模板免费.pptx,圆饼柱状图PPT,适用于分析数据或者排名等各种情况,可以用在项目汇报PPT中,招商PPT中,产品推介PPT中,圆饼柱状图,看起来又像颁奖的站台,非常的形象有趣。

    chart_C#chart控件_C#_C#Chart_图表

    在这种情况下,`C# Chart控件`是一个强大的工具,它允许开发者创建各种类型的图表,如圆饼图、柱形图等。本文将深入探讨如何使用C#的Chart组件以及其在实际应用中的关键知识点。 首先,`C# Chart控件`是.NET ...

Global site tag (gtag.js) - Google Analytics