Hopes

          Start Here..

           

          Web Chart

          項目中有報表圖形化的需求, 于是開始在網上找第三方chart控件。因時間緊迫,在CSDN中搜了幾輪后大至確定了幾個候選:

                一、Office帶的OWC控件;二、ComponentOne;三、Web Chart。


          OWC似乎使用者居多,但看見有網友在帖中抱怨OWC在使用時需要許可證書,于是將其排除,我可不想BOSS在看報表時彈出一個“沒有許可證書”的窗口。


          接著找到了ComponentOne的Web chart做出的各種效果圖,效果極佳。我一下子被迷住了,決定就是它,于是馬不停蹄的下了最新版100多M的安裝文件,又花一上午找了個可以用的注冊碼,再找了篇教程,OK萬事俱備,興匆匆的開始寫代碼。需求不復雜,在一個頁面上畫出多條折線圖即可,根據以往經驗,這種大型商業共享軟件在官方站點上看兩個Example頂多一小時絕對能搞定的。但結果讓我非常的惱火,官方的Example簡單的它偏不提供,弄些什么AJAX的,一大堆實現輔助效果的代碼,你要找的核心的那三四行打死也找不到,好像就怕你一下子把它的Example看明白了。歷來討厭這種軟件。于是卸載、刪除......等全部弄完,一天過去了。


          還好,后來找到了Web Chart。代碼超簡潔,效果也還不錯,寫些簡單的示例供大家參考:


          一、折線圖

            

          //引用命名空間
          using WebChart;

          //定義一個顏色數組,供循環時為不同的記錄填充不同的顏色
          private string[] myColor = new string[]
          {
              
          "Tomato",//西紅柿
              "Black",
              
          "Gold",
              
          "Blue",
              
          "Green",
              
          "Orange",
              
          "Pink",//粉紅
              "Violet",//紫羅蘭
              "Orchid",//淡紫色
              "Lime",//亮綠
              "Tan",//茶色
              "Red",
              
          "Navy"//橘紅
          };

          //用靜態方式示例了畫出一條兩個點的最簡單折線.實際項目據此做循環而以.
          private void doIt()
          {
              
          //創建折線對象
              LineChart myChart = new LineChart();
              
          //為折線填充顏色
              myChart.Line.Color = Color.FromName(myColor[0]);
              myChart.Fill.Color 
          = Color.FromName(myColor[0]);
              myChart.LineMarker 
          = new DiamondLineMarker(8, Color.FromName(myColor[0]), Color.FromName(myColor[0]));
              
          //圖例說明
              myChart.Legend = "折線一";
              
          //添加第一個點,參數一為x座標上的名稱,參數二為y座標上的值
              myChart.Data.Add(new ChartPoint(""float.Parse("100")));
              
          //添加第二個點
              myChart.Data.Add(new ChartPoint(""float.Parse("200")));
              
          //chart為控件ID
              this.chart.Charts.Add(myChart);
              
          this.chart.RedrawChart();
          }

          二、柱狀圖


          //顏色數組
          private string[] myColor = new string[]
          {
              
          "Fuchsia",
              
          "Black",
              
          "Gold",
              
          "Blue",
              
          "HotPink",
              
          "Orange",
              
          "Peru",
              
          "DodgerBlue",
              
          "Lime",
              
          "Tan",
              
          "Red",
              
          "GreenYellow",
              
          "DarkGreen",
              
          "DimGray",
              
          "Orchid"
          };

          //調用該方法生成柱狀圖
          private void bindchart()
          {
              
          //獲取一個DataTable,具體函數略...
              DataTable dt = this.getdt();
              
          if (dt != null)
              {
                  
          if (dt.Rows.Count > 0)
                  {
                      
          //遍歷DataTable為每條記錄生成一個柱狀
                      for (int i = 0; i < dt.Rows.Count; i++)
                      {
                          
          //創建對象
                          ColumnChart mychart = new ColumnChart();
                          
          //設置柱子寬度
                          mychart.MaxColumnWidth = 48;
                          
          //顏色
                          mychart.Fill.Color = Color.FromName(this.myColor[i]);
                          
          //在柱子上顯示數量
                          mychart.DataLabels.Visible = true;
                          
          //數量的字體
                          mychart.DataLabels.Font = new Font("Verdana"14);
                          
          //添加
                          mychart.Data.Add(new ChartPoint(""float.Parse(dt.Rows[i]["num"].ToString())));
                          
          //備注
                          mychart.Legend = dt.Rows[i]["name"].ToString();
                          
          this.chart.Charts.Add(mychart);
                      }
                      
          //輔助設置
                      
          //背景色
                      chart.Background.Color = Color.FromArgb(165016);
                      chart.YAxisFont.ForeColor 
          = Color.FromArgb(165016);
                      chart.XAxisFont.ForeColor 
          = Color.FromArgb(165016);
                      
          //內部線條
                      chart.Border.Color = Color.FromArgb(200200200);
                      
          //邊框樣式
                      chart.BorderStyle = BorderStyle.None;
                      
          //y最大值
                      double max = double.Parse(dt.Compute("MAX(num)","").ToString());
                      
          //遞增值
                      int intv = 2;

                      
          //數量小于16的情況
                      if (max < 16)
                      {
                          max 
          = 16;
                      }
                      
          //大于16的情況
                      else
                      {
                          intv 
          = int.Parse(Math.Ceiling(max/8).ToString());
                          max 
          += intv;
                      }

                      
          //設置Y軸終點值
                      chart.YCustomEnd = int.Parse(max.ToString());
                      
          //y遞增值
                      chart.YValuesInterval = intv;

                      
          //生成
                      this.chart.RedrawChart();
                  }
              }
          }

          Web Chart為免費控件,需要的朋友可去官方地址下載:http://www.carlosag.net/Tools/WebChart/Default.aspx,上面還有很多效果和代碼示例

          posted on 2012-08-18 17:02 ** 閱讀(138) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊

          收藏夾

          C#學習

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 朝阳县| 南京市| 莱州市| 电白县| 平顺县| 卫辉市| 富宁县| 瓦房店市| 麻栗坡县| 涞源县| 上饶市| 红安县| 田林县| 互助| 辛集市| 商都县| 延边| 勐海县| 射洪县| 高邮市| 江城| 乐昌市| 庆元县| 六盘水市| 彭泽县| 略阳县| 祁东县| 杭锦后旗| 襄垣县| 台州市| 江油市| 新乐市| 方正县| 团风县| 德阳市| 内江市| 惠州市| 奉新县| 布拖县| 眉山市| 衡山县|