using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
namespace WindowsFormsApplication9
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ }
}
////////////////////////////////////////////////////////////////////////
public class RealTimeImageMaker
{
private int width;//要生成的曲线图的宽度
private int height;//要生成的曲线图的高度
private Point[] pointList;//用来绘制曲线图的关键点,依次将这些点连接起来即得到曲线图
private Random random = new Random();//用于生成随机数
private Bitmap currentImage;//当前要绘制的图片
private Color backColor;//图片背景色
private Color foreColor;//图片前景色
//图片的高度
public int Height
{
get { return height; }
set { height = value; }
}
/// 图片的宽度
public int Width
{
get { return width; }
set { width = value; }
}
/// 构造函数,指定生成的曲线图的宽度和高度
/// </SUMMARY> wo nengbunengbuyayaoyaosbsjiushizhwyangfazidewsmjmmzuiainideren
/// <PARAM name="width">要生成的曲线图的宽度</PARAM>
/// <PARAM name="height">要生成的曲线图的高度</PARAM>
public RealTimeImageMaker(int width, int height): this(width, height, Color.Gray, Color.Blue)
{ }
/// 构造函数,指定生成的曲线图的宽度、高度及背景色和前景色
/// <PARAM name="width">要生成的曲线图的宽度</PARAM>
/// <PARAM name="height">要生成的曲线图的高度</PARAM>
/// <PARAM name="backColor">曲线图背景色</PARAM>
/// <PARAM name="foreColor">曲线图前景色</PARAM>
public RealTimeImageMaker(int width, int height, Color backColor, Color foreColor)
{
this.width = width;
this.height = height;
this.backColor = backColor;
this.foreColor = foreColor;
pointList = new Point[width];
Point tempPoint;
//初始化曲线上的所有点坐标
for (int i = 0; i < width; i++)
{ tempPoint = new Point();
//曲线的横坐标沿x轴依次递增,在横向位置上每个像素都有一个点
tempPoint.X = i;
//曲线上每个点的纵坐标随机生成,但保证在显示区域之内
tempPoint.Y = random.Next() % height;
pointList[i] = tempPoint;
} }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// 获取当前依次连接曲线上每个点绘制成的曲线
/// </SUMMARY>
/// <RETURNS></RETURNS>
public Image GetCurrentCurve()
{
//currentImage = historyImage.Clone(new Rectangle(1, 0, width - 1, height), PixelFormat.Format24bppRgb);
currentImage = new Bitmap(width, height);
Point p;
//将当前定位曲线图的坐标点前移,并且将横坐标减1,
//这样做的效果相当于移除当前第一个点
for (int i = 0; i < width-1; i++)
{
p = pointList[i + 1];
pointList[i] = new Point(p.X-1,p.Y);
}
Point tempPoint = new Point();
//新生成曲线图定位点的最后一个点的坐标
tempPoint.X = width;
//曲线上每个点的纵坐标随机生成,但保证在显示区域之内
tempPoint.Y = random.Next(DateTime.Now.Millisecond) % height;
//在最后再添加一个新坐标点
pointList[width-1]=tempPoint;
Graphics g = Graphics.FromImage(currentImage);
g.Clear(backColor);
//绘制曲线图
g.DrawLines(new Pen(foreColor), pointList);
g.Dispose();
return currentImage;
} ///////////////////////////////////////////////////////////////////////////////////////////////////////////
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
namespace WindowsFormsApplication9
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ }
}
////////////////////////////////////////////////////////////////////////
public class RealTimeImageMaker
{
private int width;//要生成的曲线图的宽度
private int height;//要生成的曲线图的高度
private Point[] pointList;//用来绘制曲线图的关键点,依次将这些点连接起来即得到曲线图
private Random random = new Random();//用于生成随机数
private Bitmap currentImage;//当前要绘制的图片
private Color backColor;//图片背景色
private Color foreColor;//图片前景色
//图片的高度
public int Height
{
get { return height; }
set { height = value; }
}
/// 图片的宽度
public int Width
{
get { return width; }
set { width = value; }
}
/// 构造函数,指定生成的曲线图的宽度和高度
/// </SUMMARY> wo nengbunengbuyayaoyaosbsjiushizhwyangfazidewsmjmmzuiainideren
/// <PARAM name="width">要生成的曲线图的宽度</PARAM>
/// <PARAM name="height">要生成的曲线图的高度</PARAM>
public RealTimeImageMaker(int width, int height): this(width, height, Color.Gray, Color.Blue)
{ }
/// 构造函数,指定生成的曲线图的宽度、高度及背景色和前景色
/// <PARAM name="width">要生成的曲线图的宽度</PARAM>
/// <PARAM name="height">要生成的曲线图的高度</PARAM>
/// <PARAM name="backColor">曲线图背景色</PARAM>
/// <PARAM name="foreColor">曲线图前景色</PARAM>
public RealTimeImageMaker(int width, int height, Color backColor, Color foreColor)
{
this.width = width;
this.height = height;
this.backColor = backColor;
this.foreColor = foreColor;
pointList = new Point[width];
Point tempPoint;
//初始化曲线上的所有点坐标
for (int i = 0; i < width; i++)
{ tempPoint = new Point();
//曲线的横坐标沿x轴依次递增,在横向位置上每个像素都有一个点
tempPoint.X = i;
//曲线上每个点的纵坐标随机生成,但保证在显示区域之内
tempPoint.Y = random.Next() % height;
pointList[i] = tempPoint;
} }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// 获取当前依次连接曲线上每个点绘制成的曲线
/// </SUMMARY>
/// <RETURNS></RETURNS>
public Image GetCurrentCurve()
{
//currentImage = historyImage.Clone(new Rectangle(1, 0, width - 1, height), PixelFormat.Format24bppRgb);
currentImage = new Bitmap(width, height);
Point p;
//将当前定位曲线图的坐标点前移,并且将横坐标减1,
//这样做的效果相当于移除当前第一个点
for (int i = 0; i < width-1; i++)
{
p = pointList[i + 1];
pointList[i] = new Point(p.X-1,p.Y);
}
Point tempPoint = new Point();
//新生成曲线图定位点的最后一个点的坐标
tempPoint.X = width;
//曲线上每个点的纵坐标随机生成,但保证在显示区域之内
tempPoint.Y = random.Next(DateTime.Now.Millisecond) % height;
//在最后再添加一个新坐标点
pointList[width-1]=tempPoint;
Graphics g = Graphics.FromImage(currentImage);
g.Clear(backColor);
//绘制曲线图
g.DrawLines(new Pen(foreColor), pointList);
g.Dispose();
return currentImage;
} ///////////////////////////////////////////////////////////////////////////////////////////////////////////
}
现在又是什么错误?