如何从超声心动图动态
等行创建图表我试试这个:
Graphics gr = this.CreateGraphics();
Pen p = new Pen(System.Drawing.Color.Blue, 3.0f);
int y = 15;
for (int i = 1; i < 800; i = i + 10)
{
gr.DrawLine(p, i, 500, i, y);
if (i < 400)
y = y + 5;
else
y = y - 5;
}
我应该像超声心动图一样有信息流
the X -> is the time
the y -> is the value
感谢
答案 0 :(得分:0)
这可能会给你一个想法 。
使用计时器生成随机Y值的示例应用程序。 图表绘制在pictureBox上。并设置一个计时器来频繁刷新pictureBox。
public partial class Form1 : Form
{
Timer timer = new Timer();
int curX = 0;
Timer valueInsertingTimer = new Timer();
public Form1()
{
InitializeComponent();
pictureBox1.Paint += pictureBox1_Paint;
timer.Interval = 10;
timer.Tick += timer_Tick;
timer.Start();
valueInsertingTimer.Interval = 30;
valueInsertingTimer.Tick += valueInsertingTimer_Tick;
valueInsertingTimer.Start();
}
void valueInsertingTimer_Tick(object sender, EventArgs e)
{
Random rnd = new Random();
int num = rnd.Next(80);
addY(num);
}
void addY(int val)
{
if (Ys.Count > 0)
{
int lastY = Ys[Ys.Count - 1];
if (val > lastY)
{
for (int i = lastY; i < val; i++)
{
Ys.Add(i);
Xs.Add(curX += 1);
}
}
else if (val < lastY)
{
for (int i = lastY; i > val; i--)
{
Ys.Add(i);
Xs.Add(curX += 1);
}
}
else
{
Xs.Add(curX += 1);
Ys.Add(val);
}
}
else
{
Ys.Add(1);
Xs.Add(curX += 1);
}
if (Xs.Count > pictureBox1.Width)
{
Xs.RemoveAt(0);
Ys.RemoveAt(0);
difference++;
}
}
int difference = 0;
void timer_Tick(object sender, EventArgs e)
{
pictureBox1.Refresh();
}
List<int> Xs = new List<int>();
List<int> Ys = new List<int>();
void pictureBox1_Paint(object sender, PaintEventArgs e)
{
for (int i = 0; i < Xs.Count; i++)
{
e.Graphics.FillRectangle(Brushes.Black, Xs[i] - difference, pictureBox1.Height - Ys[i], 1, 1);
}
}
}