亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP.NET實現折線圖的繪制

2019-11-17 01:59:54
字體:
來源:轉載
供稿:網友

asp.net實現折線圖的繪制

用到.Net中繪圖類,實現折線圖的繪制,生成圖片,在頁面的顯示,代碼如下:

  1  /// <summary>  2     /// 獲取數據   3     /// strChartName:圖名稱;  4     /// yName:縱坐標名稱;  5     /// xName:橫坐標名稱;  6     /// iyMaxValue:縱坐標最大值;  7     /// dyAveValue:縱坐標單位值=(縱坐標最大值/標量30)  8     /// ----100   30    :3  9     /// ----200   30    :1.5; 10     /// xdbColumnName:橫坐標綁定顯示數據表值的列名; 11     /// ydbColumnName:縱坐標綁定顯示數據表值得列名; 12     /// </summary> 13     public void Get_CurveData(string strSql,string strChartName,string yName,string xName,int iyMaxValue, double dyAveValue,string xdbColumnName,string ydbColumnName) 14     { 15         try 16         { 17             DataSet ds = sqlaccess.ReadFromDB(strSql); 18             draw(ds.Tables[0], strChartName, yName, xName, iyMaxValue, dyAveValue, xdbColumnName, ydbColumnName); 19         } 20         catch (Exception exp) 21         { 22             Response.Write(sqlAccess.ExceptionMessage); 23         } 24     } 25  26     public void draw(DataTable dt, string strChartName, string yName, string xName, int iyMaxValue, double dyAveValue, string xdbColumnName, string ydbColumnName) 27     { 28         //取得記錄數量  29         int count = dt.Rows.Count; 30         //記算圖表寬度  31         int wd = 80 + 20 * (count - 1); 32         //設置最小寬度為800  33         if (wd < 600) wd = 600; 34         //生成Bitmap對像  35         Bitmap img = new Bitmap(wd, 400); 36         //生成繪圖對像  37         Graphics g = Graphics.FromImage(img); 38         //定義黑色畫筆  39         Pen Bp = new Pen(Color.Black); 40         //定義紅色畫筆  41         Pen Rp = new Pen(Color.Red); 42         //定義銀灰色畫筆  43         Pen Sp = new Pen(Color.Silver); 44         //定義藍色畫筆 45         Pen Blp = new Pen(Color.Blue); 46         //定義大標題字體  47         Font Bfont = new Font("Arial", 12, FontStyle.Bold); 48         //定義一般字體  49         Font font = new Font("Arial", 9); 50         //定義大點的字體  51         Font Tfont = new Font("Arial", 9); 52         //定義橫坐標間隔,(最佳值是總寬度-留空寬度[左右側都需要])/(記錄數量-1)  53         int xSpace = (wd - 100) / (count - 1); 54         //定義縱坐標間隔,不能隨便修改,跟高度和橫坐標線的條數有關,最佳值=(繪圖的高度-上面留空-下面留空)  55         int ySpace = 30; 56         //縱坐標最大值和間隔值  57         int yMaxValue = iyMaxValue; 58         //繪制底色  59         g.DrawRectangle(new Pen(Color.White, 400), 0, 0, img.Width, img.Height); 60         //定義黑色過渡型筆刷  61         LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Black, Color.Black, 1.2F, true); 62         //定義藍色過渡型筆刷  63         LinearGradientBrush Bluebrush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Blue, Color.Blue, 1.2F, true); 64         //繪制大標題  65         g.DrawString(strChartName, Bfont, brush, 40, 5); 66         //繪制信息簡報  67         //string info = " 曲線圖生成時間:" + DateTime.Now.ToString(); 68         //g.DrawString(info, Tfont, Bluebrush, 40, 25); 69         //繪制圖片邊框  70         g.DrawRectangle(Bp, 0, 0, img.Width - 1, img.Height - 1); 71         //繪制豎坐標軸  72         g.DrawLine(Bp, 40, 55, 40, 360); 73         //繪制橫坐標軸 x2的60是右側空出部分  74         g.DrawLine(Bp, 40, 360, 60 + xSpace * (count - 1), 360); 75         //繪制豎坐標標題  76         g.DrawString(yName, Tfont, brush, 5, 40); 77         //繪制橫坐標標題  78         g.DrawString(xName, Tfont, brush, 40, 385); 79         //繪制豎坐標線  80         for (int i = 0; i < count; i++) 81         { 82             g.DrawLine(Sp, 40 + xSpace * i, 60, 40 + xSpace * i, 360); 83         } 84         //繪制時間軸坐標標簽  85         for (int i = 0; i < count; i++) 86         { 87             //string st = Convert.ToDateTime(dt.Rows[i]["testdate"]).ToString("MM:dd"); 88             //string st = "第" + dt.Rows[i]["testdate"].ToString() + "周"; 89             string st = dt.Rows[i][xdbColumnName].ToString(); 90             g.DrawString(st, font, brush, 30 + xSpace * i, 370); 91         } 92         //繪制橫坐標線  93         for (int i = 0; i < 10; i++) 94         { 95             g.DrawLine(Sp, 40, 60 + ySpace * i, 40 + xSpace * (count - 1), 60 + ySpace * i); 96             //橫坐標軸的值間隔是最大值除以間隔數  97             int s = yMaxValue - i * (yMaxValue / 10); 98             //繪制發送量軸坐標標簽  99             g.DrawString(s.ToString(), font, brush, 10, 60 + ySpace * i);100         }101 102         //處理39.6%形式的數據103         string[] strArr = new string[dt.Rows.Count];104         for (int i = 0; i < count; i++)105         {106             string strValue = dt.Rows[i][ydbColumnName].ToString();107             if (strValue.Contains("%"))108             {109                 strArr[i] = strValue.Split('%')[0];110             }111             else112             {113                 strArr[i] = strValue;114             }115         }116         //200/30117         //定義縱坐標單位數值=縱坐標最大值/標量最大值118         double yAveValue = dyAveValue;119         //定義曲線轉折點 120         Point[] p = new Point[count];121         for (int i = 0; i < count; i++)122         {123             p[i].X = 40 + xSpace * i;124             p[i].Y = 360 - Convert.ToInt32(Convert.ToDouble(strArr[i]) * yAveValue);125         }126 127         //繪制折線圖 128         //g.DrawLines(Rp, p); 129         //繪制曲線圖 130         //g.DrawCurve(Rp, p); 131         //繪制自定義張力的曲線圖(0.5F是張力值,默認就是這個值) 132         g.DrawCurve(Rp, p, 0.5F);133         //g.DrawLines(Rp, p); 134         //當需要在一個圖里繪制多條曲線的時候,就多定義個point數組,然后畫出來就可以了。 135         for (int i = 0; i < count; i++)136         {137             //繪制發送記錄點的發送量 138             g.DrawString(strArr[i], font, Bluebrush, p[i].X, p[i].Y - 10);139             //繪制發送記錄點 140             g.DrawRectangle(Rp, p[i].X - 1, p[i].Y - 1, 2, 2);141         }142 143         ///*******************畫中值線///144         //for (int i = 0; i < count; i++)145         //{146         //    p[i].X = 40 + xSpace * i;147         //    p[i].Y = 360 - Convert.ToInt32("50") * yAveValue;148         //}149         //for (int i = 0; i < count; i++)150         //{151         //    //繪制發送記錄點的發送量 152         //    g.DrawString("", font, Bluebrush, p[i].X, p[i].Y - 10);153         //    //繪制發送記錄點 154         //    g.DrawRectangle(Rp, p[i].X - 1, p[i].Y - 1, 2, 2);155         //}156         //g.DrawLine(Blp, 40, 360 - Convert.ToInt32("50") * yAveValue, 60 + xSpace * (count - 1), 360 - Convert.ToInt32("50") * yAveValue);157         ///**************************///158 159         //保存繪制的圖片 160         MemoryStream stream = new MemoryStream();161         img.Save(stream, ImageFormat.Jpeg);162         //圖片輸出 163         Response.Clear();164         Response.ContentType = "image/jpeg";165         Response.BinaryWrite(stream.ToArray());166     } 167 }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久影院免费观看| 日韩精品www| 操91在线视频| 日韩精品免费观看| 欧美中文在线视频| 日韩中文字幕亚洲| 欧美日韩成人在线播放| 国产精品入口尤物| 日韩免费电影在线观看| 亚洲国产精彩中文乱码av在线播放| 国产日韩视频在线观看| 亚洲欧洲一区二区三区在线观看| 国产精品中文久久久久久久| 黄网站色欧美视频| 欧美激情aaaa| 国产一区二区免费| 成人亚洲综合色就1024| 国产a∨精品一区二区三区不卡| 国产一区二区三区在线观看网站| 亚洲大胆人体av| 国产美女扒开尿口久久久| 91香蕉嫩草神马影院在线观看| 欧美极品美女电影一区| 日本国产一区二区三区| 91视频国产一区| 亚洲欧美在线看| 欧美性色19p| 国产精品女人网站| 在线成人免费网站| 在线电影欧美日韩一区二区私密| 国产精品久久久久久亚洲调教| 啪一啪鲁一鲁2019在线视频| 国产精品电影网站| 亚洲人成电影网站| 91久久久久久久久| 91免费福利视频| 国产精品久久久久999| 色阁综合伊人av| 欧美午夜激情在线| 免费91麻豆精品国产自产在线观看| 欧美性感美女h网站在线观看免费| 亚洲aⅴ日韩av电影在线观看| 成人伊人精品色xxxx视频| 国产精品美女主播在线观看纯欲| 精品久久久久久久久久久久久| 国产日韩精品视频| 国产一区欧美二区三区| 永久免费看mv网站入口亚洲| 欧美尤物巨大精品爽| 国产精品白丝av嫩草影院| 成人黄色av网站| 亚洲第一色在线| 91嫩草在线视频| 久久综合色88| 亚洲欧洲黄色网| 国产精品视频久久久久| 成人有码在线视频| 555www成人网| 久久97久久97精品免视看| 欧美大片在线看| 日韩成人网免费视频| 日韩欧美国产激情| 国产精品美女免费视频| 538国产精品一区二区免费视频| 国产精品久久9| 久久97久久97精品免视看| 97国产精品久久| 日韩欧美高清视频| 精品国产乱码久久久久酒店| 久久久成人精品视频| 亚洲第一av在线| 欧美精品免费播放| 亚洲乱码一区av黑人高潮| 色综合久久久久久中文网| 成人免费直播live| 中文字幕久久久| 精品爽片免费看久久| 国产精品第10页| 亚洲国产精品推荐| 伊人男人综合视频网| 国产精品h在线观看| 国产精品福利在线观看| 国产一区二区三区精品久久久| 亚洲社区在线观看| 不卡av日日日| 久久香蕉国产线看观看av| 亚洲一区中文字幕在线观看| 国产精品视频内| 成人在线免费观看视视频| 国产午夜精品理论片a级探花| 日韩av在线免费看| 91中文字幕一区| 欧美激情第99页| 国产精品91在线| 欧美日韩国产中文字幕| 中文字幕精品在线视频| 亚洲第一精品电影| 97在线看免费观看视频在线观看| 亚洲成成品网站| 最近2019中文字幕第三页视频| 一道本无吗dⅴd在线播放一区| 欧美一级淫片videoshd| 亚洲美女视频网站| 国产一区二区视频在线观看| 欧美日韩国产区| 亚洲一区二区精品| 日本不卡免费高清视频| 色噜噜国产精品视频一区二区| 成人国产精品免费视频| 91亚洲精品久久久| 色噜噜狠狠色综合网图区| 国产精品av免费在线观看| 中文字幕日韩综合av| 欧美日本啪啪无遮挡网站| 亚洲免费成人av电影| 亚洲最大成人在线| 91经典在线视频| 色综合五月天导航| 欧美中文字幕在线播放| 成人久久久久久久| 精品久久久久久久久久ntr影视| 亚洲专区在线视频| 国产美女扒开尿口久久久| 色综合91久久精品中文字幕| 8090理伦午夜在线电影| 亚洲国产日韩欧美综合久久| 欧美精品一区三区| 欧美激情视频网址| 久久久精品一区二区三区| 欧美激情一区二区三区久久久| 国内精品久久久久久影视8| 亚洲最大成人在线| 91夜夜揉人人捏人人添红杏| 欧美视频精品一区| 欧美美女18p| 一区二区欧美久久| 成人性生交大片免费观看嘿嘿视频| 色综合91久久精品中文字幕| 欧美一性一乱一交一视频| 国产精品尤物福利片在线观看| 亚洲影视九九影院在线观看| 91网站免费看| 久久精品国产欧美激情| 一本色道久久综合狠狠躁篇怎么玩| 国产精品久久久久久亚洲影视| 久久久午夜视频| 97色在线观看| 欧美床上激情在线观看| 一区二区三区www| 8090成年在线看片午夜| 尤物yw午夜国产精品视频明星| 久久99久国产精品黄毛片入口| 庆余年2免费日韩剧观看大牛| 91夜夜揉人人捏人人添红杏| 日韩成人在线免费观看| 欧美高清在线播放| 九九久久久久久久久激情| 日韩在线视频免费观看| 久久久久久久久综合| 久热精品视频在线观看| 亚洲国产精品99| 欧美成人午夜免费视在线看片| 亚洲电影免费在线观看| 欧美大尺度电影在线观看|