asp.net 曲线图

qq_17454651 2014-09-05 05:50:07


求大神指导这个曲线拿asp.net用什么技术做
...全文
166 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
u571_2857922256 2014-09-06
  • 打赏
  • 举报
回复
使用折线图分析股票走势示例 //定义画布大小 int height = 440, width = 600; System.Drawing.Bitmap image = new System.Drawing.Bitmap(width, height); //创建Graphics类对象 Graphics g = Graphics.FromImage(image); //绘制线条样式 g.Clear(Color.White); Font font = new System.Drawing.Font("Arial", 9, FontStyle.Regular); Font font1 = new System.Drawing.Font("宋体", 20, FontStyle.Regular); Font font2 = new System.Drawing.Font("Arial", 8, FontStyle.Regular); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.Blue, 1.2f, true); g.FillRectangle(Brushes.AliceBlue, 0, 0, width, height); Brush brush1 = new SolidBrush(Color.Blue); Brush brush2 = new SolidBrush(Color.SaddleBrown); string str = "SELECT * FROM tb_Stock WHERE ShowYear=" + Request["ID"] + ""; SqlConnection Con = new SqlConnection(ConfigurationManager.AppSettings["ConSql"]); Con.Open(); SqlCommand Com = new SqlCommand(str, Con); SqlDataReader dr = Com.ExecuteReader(); dr.Read(); if (dr.HasRows) { g.DrawString("" + ID + "年明日A、B股票走势图", font1, brush1, new PointF(130, 30)); } dr.Close(); //画图片的边框线 g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1); Pen mypen = new Pen(brush, 1); Pen mypen2 = new Pen(Color.Red, 2); //绘制线条 //绘制纵向线条 int x = 60; for (int i = 0; i < 12; i++) { g.DrawLine(mypen, x, 80, x, 340); x = x + 40; } Pen mypen1 = new Pen(Color.Blue, 2); g.DrawLine(mypen1, x - 480, 80, x - 480, 340); //绘制横向线条 int y = 106; for (int i = 0; i < 9; i++) { g.DrawLine(mypen, 60, y, 540, y); y = y + 26; } g.DrawLine(mypen1, 60, y, 540, y); //x轴 String[] n = {" 一月", " 二月", " 三月", " 四月", " 五月", " 六月", " 七月", " 八月", " 九月", " 十月", "十一月", "十二月"}; x = 35; for (int i = 0; i < 12; i++) { g.DrawString(n[i].ToString(), font, Brushes.Red, x, 348); //设置文字内容及输出位置 x = x + 40; } //y轴 String[] m = {"900点", " 800点", " 700点", "600点", " 500点", " 400点", " 300点", " 200点", " 100点"}; y = 100; for (int i = 0; i < 9; i++) { g.DrawString(m[i].ToString(), font, Brushes.Red, 10, y); //设置文字内容及输出位置 y = y + 26; } int[] Count1 = new int[12]; int[] Count2 = new int[12]; string[] NumChr = new string[12]; string cmdtxt2 = "SELECT * FROM tb_Stock WHERE ShowYear=" + ID + ""; SqlCommand Com1 = new SqlCommand(cmdtxt2, Con); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = Com1; DataSet ds = new DataSet(); da.Fill(ds); int j = 0; for (int i = 0; i < 12; i++) { NumChr[i] = ds.Tables[0].Rows[0][i + 1].ToString(); } for (j = 0; j < 12; j++) { Count1[j] = Convert.ToInt32(NumChr[j].Split('|')[0].ToString()) * 26 / 100; } for (int k = 0; k < 12; k++) { Count2[k] = Convert.ToInt32(NumChr[k].Split('|')[1].ToString()) * 26 / 100; } //显示折线效果 SolidBrush mybrush = new SolidBrush(Color.Red); Point[] points1 = new Point[12]; points1[0].X = 60; points1[0].Y = 340 - Count1[0]; points1[1].X = 100; points1[1].Y = 340 - Count1[1]; points1[2].X = 140; points1[2].Y = 340 - Count1[2]; points1[3].X = 180; points1[3].Y = 340 - Count1[3]; points1[4].X = 220; points1[4].Y = 340 - Count1[4]; points1[5].X = 260; points1[5].Y = 340 - Count1[5]; points1[6].X = 300; points1[6].Y = 340 - Count1[6]; points1[7].X = 340; points1[7].Y = 340 - Count1[7]; points1[8].X = 380; points1[8].Y = 340 - Count1[8]; points1[9].X = 420; points1[9].Y = 340 - Count1[9]; points1[10].X = 460; points1[10].Y = 340 - Count1[10]; points1[11].X = 500; points1[11].Y = 340 - Count1[11]; g.DrawLines(mypen2, points1); //绘制折线 //绘制节点的具体值(从数据库中获取指定值) int ax=61; Font sfont1 = new System.Drawing.Font("Arial", 9, FontStyle.Regular); for (int amr = 0; amr < 12; amr++) { PointF pitf1 = new PointF(ax, 341 - Count1[amr]); g.DrawString(NumChr[amr].Split('|')[0].ToString(), sfont1, Brushes.Black, pitf1); ax = ax + 40; } Pen mypen3 = new Pen(Color.Black,2); Point[] points2 = new Point[12]; points2[0].X = 60; points2[0].Y = 340 - Count2[0]; points2[1].X = 100; points2[1].Y = 340 - Count2[1]; points2[2].X = 140; points2[2].Y = 340 - Count2[2]; points2[3].X = 180; points2[3].Y = 340 - Count2[3]; points2[4].X = 220; points2[4].Y = 340 - Count2[4]; points2[5].X = 260; points2[5].Y = 340 - Count2[5]; points2[6].X = 300; points2[6].Y = 340 - Count2[6]; points2[7].X = 340; points2[7].Y = 340 - Count2[7]; points2[8].X = 380; points2[8].Y = 340 - Count2[8]; points2[9].X = 420; points2[9].Y = 340 - Count2[9]; points2[10].X = 460; points2[10].Y = 340 - Count2[10]; points2[11].X = 500; points2[11].Y = 340 - Count2[11]; g.DrawLines(mypen3, points2); //绘制折线 int bx = 61; Font sfont2 = new System.Drawing.Font("Arial", 9, FontStyle.Regular); for (int bmr = 0; bmr < 12; bmr++) { PointF pitf2 = new PointF(bx, 341 - Count2[bmr]); g.DrawString(NumChr[bmr].Split('|')[1].ToString(), sfont2, Brushes.Red,pitf2); bx = bx + 40; }/CodeGo.net/ //绘制标识 g.DrawRectangle(new Pen(Brushes.Red), 150, 370, 250, 50); //绘制范围框 g.FillRectangle(Brushes.Red, 250, 380, 20, 10); //绘制小矩形 g.DrawString("明日A股", font2,Brushes.Red, 270, 380); g.FillRectangle(Brushes.Black, 250, 400, 20, 10); g.DrawString("明日B股", font2,Brushes.Black, 270, 400); //类型输出并显示图片到页面中 System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); }
  • 打赏
  • 举报
回复
采用成熟控件呗。 ASP.NET Wijmo的复合图表控件示例图如下:

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧