• 2018年6月15日随笔--统计图


    柱状图代码:这是画的图,所以要放在一个“容器”中,我放在的是pictureBox控件中;在方法最后一句就是放在pictureBox1的。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Drawing.Drawing2D;
    using System.Data.SqlClient;
    
    namespace 统计图
    {
        public partial class MYtest : Form
        {
            public MYtest()
            {
                InitializeComponent();
            }
    
            private void MYtest_Load(object sender, EventArgs e)
            {
                CreateImage();
            }
            private void CreateImage()
            {
                int height = 500, width = 700;
                Bitmap image = new Bitmap(width, height);
                //创建Graphics类对象
                Graphics g = Graphics.FromImage(image);
    
                try
                {
                    //清空图片背景色
                    g.Clear(Color.White);
    
                    Font font = new Font("Arial", 10, FontStyle.Regular);
                    Font font1 = new Font("宋体", 20, FontStyle.Bold);
    
                    LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
                    Color.Blue, Color.BlueViolet, 1.2f, true);
                    g.FillRectangle(Brushes.WhiteSmoke, 0, 0, width, height);
                    // Brush brush1 = new SolidBrush(Color.Blue);
                    //this.ddlTaget.SelectedItem.Text + " " + this.ddlYear.SelectedItem.Text +
                    g.DrawString(" 测试自动", font1, brush, new PointF(70, 30));
                    //画图片的边框线
                    g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1);
    
                    AdjustableArrowCap aac = new AdjustableArrowCap(5, 2);//添加的箭头
                    Pen mypen = new Pen(brush, 1);  //设置画笔
                    //绘制线条
                    //绘制竖向线条
                    Pen mypen2 = new Pen(Color.Blue, 2);
                    x = 60;
                    mypen2.CustomStartCap = aac;
                    g.DrawLine(mypen2, x, 80, x, 340);
                    //绘制横向线条
                    Pen mypen1 = new Pen(Color.Blue, 2);
                    y = 340;
                    mypen1.CustomEndCap = aac;
                    g.DrawLine(mypen1, 60, y, 620, y);
    
                    //x轴
                    x = 85;
                    for (int i = 0; i < 7; i++)
                    {
                        int dt = DateTime.Now.Month;
                        dt = dt + 6 + i;
                        if (dt > 12)
                            dt = dt - 12;
    
                        g.DrawString(dt.ToString() + "", font, Brushes.Blue, x, 348); //设置文字内容及输出位置
                        x = x + 60;
                    }
                    g.DrawString("月份", font, Brushes.Blue, 600, 348);
                    //y轴
                    String[] m = {"250","225", "200", "175", "150", "125", "100", " 75",
    " 50", " 25", " 0"};
                    y = 72;
                    for (int i = 0; i < 10; i++)
                    {
                        g.DrawString(m[i].ToString(), font, Brushes.Blue, 25, y); //设置文字内容及输出位置
                        y = y + 26;
                    }
                    g.DrawString("产量/kg", font, Brushes.Blue, 25, 60);
                    int[] Count1 = new int[7];
                    int[] Count2 = new int[7];
                    //柱状图的柱子
                    for (int i = 0; i < 7; ++i)
                    {
                        Count1[i] = i + 100;
                    }
                    for (int i = 0; i < 7; ++i)
                    {
                        Count2[i] = i + 100;
                    }
    
                    //绘制柱状图.
                    x = 90;
                    Font font2 = new System.Drawing.Font("Arial", 10, FontStyle.Bold);
                    SolidBrush mybrush = new SolidBrush(Color.Red);
                    SolidBrush mybrush2 = new SolidBrush(Color.Green);
    
                    //第一期
                    g.FillRectangle(mybrush, x, 340 - Count1[0], 20, Count1[0]);
                    g.DrawString(Count1[0].ToString(), font2, Brushes.Red, x, 340 - Count1[0] - 15);
    
                    //第二期
                    x = x + 60;
                    g.FillRectangle(mybrush, x, 340 - Count1[1], 20, Count1[1]);
                    g.DrawString(Count1[1].ToString(), font2, Brushes.Red, x, 340 - Count1[1] - 15);
    
    
                    //第三期
                    x = x + 60;
                    g.FillRectangle(mybrush, x, 340 - Count1[2], 20, Count1[2]);
                    g.DrawString(Count1[2].ToString(), font2, Brushes.Red, x, 340 - Count1[2] - 15);
    
    
                    //第四期
                    x = x + 60;
                    g.FillRectangle(mybrush, x, 340 - Count1[3], 20, Count1[3]);
                    g.DrawString(Count1[3].ToString(), font2, Brushes.Red, x, 340 - Count1[3] - 15);
    
    
                    //上半年
                    x = x + 60;
                    g.FillRectangle(mybrush, x, 340 - Count1[4], 20, Count1[4]);
                    g.DrawString(Count1[4].ToString(), font2, Brushes.Red, x, 340 - Count1[4] - 15);
    
    
                    //下半年
                    x = x + 60;
                    g.FillRectangle(mybrush, x, 340 - Count1[5], 20, Count1[5]);
                    g.DrawString(Count1[5].ToString(), font2, Brushes.Red, x, 340 - Count1[5] - 15);
    
                    //全年
                    x = x + 60;
                    g.FillRectangle(mybrush, x, 340 - Count1[6], 20, Count1[6]);
                    g.DrawString(Count1[6].ToString(), font2, Brushes.Red, x, 340 - Count1[6] - 15);
    
                    //绘制标识
                    Font font3 = new System.Drawing.Font("Arial", 10, FontStyle.Regular);
                    g.DrawRectangle(new Pen(Brushes.Blue), 170, 400, 250, 50); //绘制范围框
                    g.FillRectangle(Brushes.Red, 270, 410, 20, 10); //绘制小矩形
                    g.DrawString("报名人数", font3, Brushes.Red, 292, 408);
    
                    //g.FillRectangle(Brushes.Green, 270, 430, 20, 10);
                    //g.DrawString("通过人数", font3, Brushes.Green, 292, 428);
    
                    System.IO.MemoryStream ms = new System.IO.MemoryStream();
                    image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    //Response.ClearContent();
                    //Response.ContentType = "image/Jpeg";
                    //Response.BinaryWrite(ms.ToArray());
                }
                finally
                {
                    pictureBox1.Image = Image.FromHbitmap(image.GetHbitmap());
                    g.Dispose();
                    image.Dispose();
                }
            }
        }
    }
    View Code

    呈现出来的效果:

  • 相关阅读:
    面向对象与类
    引用数据类型
    方法
    java for 语句的用法
    java 数组
    Scanner与Random
    java基本语法
    java介绍及安装。
    数据库设计
    NFS相关、NFS服务端安装配置、exportfs命令、nfs客户端的问题
  • 原文地址:https://www.cnblogs.com/liuqifeng/p/9186981.html
Copyright © 2020-2023  润新知