Class2.cs
上传用户:zpsczj
上传日期:2022-02-13
资源大小:4436k
文件大小:5k
源码类别:

网络截获/分析

开发平台:

Visual C++

  1. using System.Collections.Generic;
  2. using System.Text;
  3. using System;
  4. using System.Data;
  5. using System.Configuration;
  6. using System.Web;
  7. using System.Web.Security;
  8. using System.Web.UI;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.WebControls.WebParts;
  11. using System.Web.UI.HtmlControls;
  12. using System.Drawing.Drawing2D;
  13. using System.Drawing.Imaging;
  14. using System.Drawing;
  15. using System.IO;
  16. namespace WindowsApplication1
  17. {
  18.     /**/
  19.     /// <summary>
  20.     /// DrawClass 的摘要说明
  21.     /// </summary>
  22.     public class DrawClass
  23.     {
  24.         public DrawClass()
  25.         {
  26.             //
  27.             // TODO: 在此处添加构造函数逻辑
  28.             //
  29.         }
  30.         public MemoryStream draw(float[] ds, float[] dx, float[] dz)
  31.         {
  32.             //取得记录数量
  33.             int count = ds.Length;
  34.             //记算图表宽度
  35.             int wd = 80 + 20 * (count - 1);
  36.             //设置最小宽度为200
  37.             if (wd < 200) wd = 200;
  38.             //生成Bitmap对像
  39.             Bitmap img = new Bitmap(wd, 200);
  40.             //生成绘图对像
  41.             Graphics g = Graphics.FromImage(img);
  42.             //定义黑色画笔
  43.             Pen Bp = new Pen(Color.Black);
  44.             //定义红色,蓝色,金色三种画笔
  45.             Pen Rps = new Pen(Color.Red);
  46.             Pen Rpx = new Pen(Color.Blue);
  47.             Pen Rpz = new Pen(Color.Gold);
  48.             //定义银灰色画笔
  49.             Pen Sp = new Pen(Color.Silver);
  50.             //定义大标题字体
  51.             Font Bfont = new Font("Arial", 12, FontStyle.Bold);
  52.             //定义一般字体
  53.             Font font = new Font("Arial", 6);
  54.             //定义大点的字体
  55.             Font Tfont = new Font("Arial", 9);
  56.             //绘制底色
  57.             g.DrawRectangle(new Pen(Color.White, 200), 0, 0, img.Width, img.Height);
  58.             //定义黑色过渡型笔刷
  59.             LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Black, Color.Black, 1.2F, true);
  60.             //定义蓝色过渡型笔刷
  61.             LinearGradientBrush Bluebrush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Blue, Color.Blue, 1.2F, true);
  62.             g.DrawRectangle(Bp, 0, 0, img.Width - 1, img.Height - 1);
  63.             //绘制竖坐标线       
  64.             for (int i = 0; i < count; i++)
  65.             {
  66.                 g.DrawLine(Sp, 20 + 20 * i, 10, 20 + 20 * i, 170);
  67.             }
  68.             //绘制时间轴坐标标签
  69.             string st;
  70.             for (int i = count - 1; i >= 0; i -= 2)
  71.             {
  72.                 if (i == count - 1)
  73.                 {
  74.                     st = DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString();
  75.                 }
  76.                 else
  77.                 {
  78.                     int j = i;
  79.                     st = j.ToString();
  80.                 }
  81.                 g.DrawString(st, font, brush, 20 + 20 * i, 180);
  82.             }
  83.             //绘制横坐标线
  84.             for (int i = 0; i < 10; i++)
  85.             {
  86.                 g.DrawLine(Sp, 20, 10 + 16 * i, 20 + 20 * (count - 1), 10 + 16 * i);
  87.                 int s = 500 - 50* i ;
  88.                 //绘制发送量轴坐标标签
  89.                 g.DrawString(s.ToString(), font, brush, 10, 10 + 16 * i);
  90.             }
  91.             //绘制竖坐标轴
  92.             g.DrawLine(Bp, 20, 10, 20, 170);
  93.             //绘制横坐标轴
  94.             g.DrawLine(Bp, 20, 170, 20 + 20 * (count - 1), 170);
  95.             //定义曲线转折点
  96.             Point[] p = new Point[count];
  97.             Point[] q = new Point[count];
  98.             Point[] o = new Point[count];
  99.             for (int i = 0; i < count; i++)
  100.             {
  101.                 p[i].X = 20 + 20 * i;
  102.                 q[i].X = 20 + 20 * i;
  103.                 o[i].X = 20 + 20 * i;
  104.                 p[i].Y = 170 - Convert.ToInt32(ds[i]) * 16 / 50;
  105.                 q[i].Y = 170 - Convert.ToInt32(dx[i]) * 16 / 50;
  106.                 o[i].Y = 170 - Convert.ToInt32(dz[i]) * 16 / 50;
  107.             }
  108.             //绘制曲线
  109.             g.DrawLines(Rps, p);
  110.             g.DrawLines(Rpx, q);
  111.             g.DrawLines(Rpz, o);
  112.             for (int i = 0; i < 1; i++)
  113.             {
  114.                 //绘制记录点的数据量
  115.                 g.DrawString(ds[i].ToString(), font, Bluebrush, p[i].X, p[i].Y - 10);
  116.                 g.DrawString(dx[i].ToString(), font, Bluebrush, q[i].X, q[i].Y - 10);
  117.                 g.DrawString(dz[i].ToString(), font, Bluebrush, o[i].X, o[i].Y - 10);//绘制记录点
  118.                 g.DrawRectangle(Rps, p[i].X - 1, p[i].Y - 1, 2, 2);
  119.                 g.DrawRectangle(Rpx, q[i].X - 1, q[i].Y - 1, 2, 2);
  120.                 g.DrawRectangle(Rpz, o[i].X - 1, o[i].Y - 1, 2, 2);
  121.             }
  122.             //保存绘制的图片
  123.             MemoryStream stream = new MemoryStream();
  124.             img.Save(stream, ImageFormat.Jpeg);
  125.             return stream;
  126.         }
  127.     }
  128. }