用户操作
[即时聊天] [发私信] [加为好友]
成运来ID:tinalucky
203次访问,排名2万外好友0人,关注者2
生活就是挑战自己!
tinalucky的文章
原创 3 篇
翻译 0 篇
转载 0 篇
评论 0 篇
最近评论
文章分类
    收藏
      相册
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 GDI+图表绘制(-) 之 柱型图收藏

      新一篇: GDI+图表绘制(二) 之 饼形图 | 

      这次做的程序的功能是从数据库中动态加载数据,然后以柱型的形式显示。完成这一功能主要由以下两个方法显现,一个为sumNum方法,另一个为CreateImage方法,其中sumNum方法用来计算各月份的商品销售量总和,而CreateImage方法则用来调用Graphics对象的相关方法绘制柱型图。   

      sumNum方法实现如下: 

       

      ///<summary>
      
      ///年总售量
      
      ///</summary>       
      
      ///<param name="P_int_year">年份</param>       
      
      ///<returns>年总售量</returns>
      
      private int sumNum(int P_int_year) 
      
      {
      
              string P_str_sum = "SELECT SUM(mouth1+mouth2+mouth3+mouth4+mouth5+mouth6+mouth7+mouth8+mouth9+mouth10+mouth11+mouth12) AS number FROM SaleInfo WHERE yearID=" + P_int_year + ""; 
      
              SqlConnection sqlcon = new SqlConnection(ConfigurationManager.AppSettings["connectionString"]); 
      
             SqlDataAdapter myda = new SqlDataAdapter(P_str_sum, sqlcon);
      
              DataSet myds = new DataSet(); 
      
             myda.Fill(myds); 
      
             return Convert.ToInt32(myds.Tables[0].Rows[0][0].ToString());
      
      }
      CreateImage方法实现如下:
      
       private void CreateImage(int P_int_year)    
      
      {
      
              int height = 400, width = 600;
      
              Bitmap image = new Bitmap(width, height); 
      
             string copyRight = "本作品为tinalucky原创,限于学习,欢迎转载"; 
      
             //创建Graphics类对象
      
              Graphics graphics = Graphics.FromImage(image);
      
              try
      
              { 
      
                 //清空图片背景色
      
                  graphics.Clear(Color.White); 
      
                 Font font = new Font("Arial", 9, FontStyle.Regular); 
      
                 Font font1 = new Font("宋体", 20, FontStyle.Regular); 
      
                 LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.Blue, 1.2f, true); 
      
                 graphics.FillRectangle(Brushes.WhiteSmoke, 0, 0, width, height); 
      
                 Brush brush1 = new SolidBrush(Color.Blue); 
      
                 graphics.DrawString("" + P_int_year + "年商品月销售情况", font1, brush1, new PointF(150, 30)); 
      
                 graphics.DrawString(copyRight,new Font("宋体",15,FontStyle.Regular),new SolidBrush(Color.Red),new PointF(80,200)); 
      
                 //画图片的边框线 
      
                 graphics.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1); 
      
                 Pen mypen = new Pen(brush, 1); 
      
                 //绘制横向线条
      
                  int x = 100; 
      
                 for (int i = 0; i < 11; i++) 
      
                 { 
      
                     graphics.DrawLine(mypen, x, 80, x, 366);
      
                      x = x + 40; 
      
                 } 
      
                 Pen mypen1 = new Pen(Color.Blue, 2); 
      
                 graphics.DrawLine(mypen1, x - 480, 80, x - 480, 366); 
      
                 //绘制纵向线条
      
                  int y = 106;  
      
                for (int i = 0; i < 10; i++)
      
                  { 
      
                     graphics.DrawLine(mypen, 60, y, 540, y); 
      
                     y = y + 26;
      
                  } 
      
                 graphics.DrawLine(mypen1, 60, y, 540, y);
      
                  //x轴
      
                  String[] n = {"  一月", "  二月", "  三月", "  四月", "  五月", "  六月", "  七月",   "  八月", "  九月", "  十月", "十一月", "十二月"}; 
      
                 x = 60; 
      
                 for (int i = 0; i < 12; i++) 
      
                 { 
      
                     graphics.DrawString(n[i].ToString(), font, Brushes.Red, x, 374); 
      
          //设置文字内容及输出位置
      
                      x = x + 40;
      
                  } 
      
                 //y轴
      
                  String[] m = {"100%", " 90%", " 80%", " 70%", " 60%", " 50%", " 40%", " 30%",   " 20%", " 10%", "  0%"}; 
      
                 y = 98; 
      
                 for (int i = 0; i < 11; i++) 
      
                 { 
      
                     graphics.DrawString(m[i].ToString(), font, Brushes.Red, 25,y); 
      
          //设置文字内容及输出位置
      
                      y = y + 26; 
      
                 }
      
                  int[] Count = new int[12]; 
      
                 string P_str_yearID = "SELECT * FROM SaleInfo WHERE yearID=" + P_int_year + ""; 
      
                 SqlConnection sqlcon = new SqlConnection(ConfigurationManager.AppSettings["connectionString"]); 
      
                 SqlDataAdapter myda = new SqlDataAdapter(P_str_yearID, sqlcon); 
      
                 DataSet myds = new DataSet(); 
      
                 myda.Fill(myds); 
      
                 int P_int_num = sumNum(P_int_year); 
      
                 for (int j = 0; j < 12; j++) 
      
                 { 
      
                     Count[j] = Convert.ToInt32(myds.Tables[0].Rows[0][j + 1].ToString()) * 100 / P_int_num; 
      
                 }
      
                  //显示柱状效果
      
                  x = 70; 
      
                 for (int i = 0; i < 12; i++) 
      
                 { 
      
                     SolidBrush mybrush = new SolidBrush(Color.Red); 
      
                     graphics.FillRectangle(mybrush, x, 366 - Count[i] * 26 / 10, 20, Count[i] * 26 / 10); 
      
                     x = x + 40; 
      
                 } 
      
                 System.IO.MemoryStream MStream = new System.IO.MemoryStream(); 
      
                 image.Save(MStream, System.Drawing.Imaging.ImageFormat.Gif); 
      
                 Response.ClearContent(); 
      
                 Response.ContentType = "image/Gif"; 
      
                 Response.BinaryWrite(MStream.ToArray()); 
      
             } 
      
             finally
      
              { 
      
                 graphics.Dispose(); 
      
                 image.Dispose();
      
              }
      
          }

      发表于 @ 2008年06月24日 12:53:00|评论(loading...)|编辑|收藏

      新一篇: GDI+图表绘制(二) 之 饼形图 | 

      评论:没有评论。

      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © tinalucky