asp.net[2.0] 用Web Chart 實現折線、柱狀、扇形圖

來源:互聯網
上載者:User

項目中有報表圖形化的需求, 於是開始在網上找第三方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(165, 0, 16);
            chart.YAxisFont.ForeColor = Color.FromArgb(165, 0, 16);
            chart.XAxisFont.ForeColor = Color.FromArgb(165, 0, 16);
            //內部線條
            chart.Border.Color = Color.FromArgb(200, 200, 200);
            //邊框樣式
            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,上面還有很多效果和程式碼範例。

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/daisy_hui/archive/2007/03/01/1518283.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.