码道至简

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、绘制简单的柱形图

 

 private void button1_Click(object sender, EventArgs e)
        {
            //创建画布
            Bitmap bitM = new Bitmap(this.panel1.Width, this.panel1.Height);
            Graphics g = Graphics.FromImage(bitM);
            g.Clear(Color.White);//清除背景色 并填充为白色
            //x y轴坐标 以及w  h绘制矩形的宽高
            int x, y, w, h;
            Random ran = new Random();
            for (int i = 0; i < 4; i++)
            {
                //绘制名字
              g.DrawString("名字"+(i+1),new Font("宋体",8,FontStyle.Regular),new SolidBrush(Color.Black),76+40*i,this.panel1.Height-16);
              x = 78 + 40 * i;
            int num=ran.Next(40, 400); 
              y = this.panel1.Height - 20-(num*20/100);
              w = 24;
              h = num * 20 / 100;
              g.FillRectangle(new SolidBrush(Color.FromArgb(60, 120, 80)), x, y, w, h);
            }
            this.panel1.BackgroundImage = bitM;
           
        }

 

二、绘制带有辅助线的柱形图 

 

 

 private void button1_Click(object sender, EventArgs e)
        {
           
            int panelHeight=this.panel1.Height;
            int panelWidth=this.panel1.Width;
             //创建新的画布
            Bitmap bitM = new Bitmap(panelWidth,panelHeight);
            Graphics g = Graphics.FromImage(bitM);
            g.Clear(Color.White);
            Random ran = new Random();
            Pen RedPan = new Pen(new SolidBrush(Color.Red),2.0f);
            for (int i = 0; i < 12; i++)
            {
                //绘制水平线
                g.DrawLine(RedPan, 50, panelHeight - 20 - i * 20, panelWidth - 40, panelHeight - 20 - i * 20);
                //绘制文字
                g.DrawString(i*100+"",new Font("宋体",10,FontStyle.Regular),new SolidBrush(Color.Black),20,panelHeight-27-i*20);
                
            }
            int x, y, w, h,ranNum;
            w = 24;
            for (int i = 0; i < 7; i++)
            {
                //绘制垂直直线
                g.DrawLine(RedPan,50+40*i,panelHeight-20,50+40*i,20);
                //绘制名字
                g.DrawString("名字" + (i + 1), new Font("宋体", 8, FontStyle.Regular), new SolidBrush
                (Color.Black), 76 + 40 * i, panelHeight - 16);
                x = 78 + 40 * i;
                ranNum=ran.Next(50,250);
                y = panelHeight - 20 - ranNum;
                h = ranNum;
                g.FillRectangle(new SolidBrush(Color.FromArgb(60,130,80)),x,y,w,h);
            }
            g.DrawLine(RedPan, 50 + 40 * 7, panelHeight - 20, 50 + 40 * 7, 20);
            this.panel1.BackgroundImage = bitM;

        }

 三、绘制带有月份的柱形图 

 private void button1_Click(object sender, EventArgs e)
        {
            int panelHeight = this.panel1.Height;
            int panelWidth = this.panel1.Width;
            //创建新的画布
            Bitmap bitM = new Bitmap(panelWidth, panelHeight);
            Graphics g = Graphics.FromImage(bitM);
            g.Clear(Color.White);
            //设置字体
            Font font = new Font("Arial",9,FontStyle.Regular);
            Font fontSong = new Font("宋体", 20, FontStyle.Regular);
            LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, bitM.Width, bitM.Height),Color.Blue,Color.Green,1.2f,true);
            g.FillRectangle(Brushes.WhiteSmoke, 0, 0, panelWidth, panelHeight);
            Brush brush1 = new SolidBrush(Color.Blue);
            g.DrawString("2018XX走势", fontSong, brush1, new PointF(180, 30));
            //画图片的边框线
            g.DrawRectangle(new Pen(Color.Blue),0,0,panelWidth-4,panelHeight-4);
            Pen mypen = new Pen(brush,1f);
            //绘制纵向线条
            int x = 50;
            for (int i = 0; i < 13; i++)
            {
                g.DrawLine(mypen,x,75,x,307);
                x += 40;
            }
           // 绘制横向线条
            int y = 74;

            for (int i = 0; i < 10; i++)
            {
                g.DrawLine(mypen, 50, y, 530, y);
                y += 26;
            }
            //绘制X轴月份
            string[] strX = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" };
            x = 45;
            for (int i = 0; i < strX.Length; i++)
            {
                g.DrawString(strX[i].ToString(),font,Brushes.Red,x,panelHeight-30);
                x += 40;
            }
            //绘制Y轴数量
            string[] StrY = { "0", "100", "200", "300", "400", "500", "600", "700", "800" };
            y = 78;
            for (int i = 0; i < StrY.Length; i++)
            {
                g.DrawString(StrY[StrY.Length-i-1].ToString(), font, Brushes.Red, 25, y);
                y += 26;
            }
            //填充数据
            Random ran = new Random();
            x = 55;
            y = 220;
            int  h=0;
            for (int i = 0; i < strX.Length; i++)
            {
                int ranNum=ran.Next(0,800);
                SolidBrush sb = new SolidBrush(Color.FromArgb(150,0,0));
                h = ranNum /4;
                g.FillRectangle(sb, x +i * 30, y-h+88, 30, h);
                x +=10;
            }
            this.panel1.BackgroundImage = bitM;

           
        }

 

 
posted on 2018-02-03 16:25  码道至简  阅读(791)  评论(0编辑  收藏  举报