c#做一个类似心电图效果的程序,从左往右100ms描一个点,连线,就像用笔在画线一样,到达一定宽度 100

c#做一个类似心电图效果的程序,从左往右100ms描一个点,连线,就像用笔在画线一样,到达一定宽度,再从头画,这时每描一个点,就先擦出这一列的点。... c#做一个类似心电图效果的程序,从左往右100ms描一个点,连线,就像用笔在画线一样,到达一定宽度,再从头画,这时每描一个点,就先擦出这一列的点。 展开
 我来答
SWEETSWISS
推荐于2017-09-18 · TA获得超过562个赞
知道小有建树答主
回答量:701
采纳率:0%
帮助的人:191万
展开全部
//说明,最好将pictureBox_board的背景色设置为黑色,timer1时间间隔设为100ms
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace heartBeat
{
    public partial class Form1 : Form
    {
        int i = 0;
        int y0 = 0;                //上一个Y
        static int Xinterval = 10;    //水平间隔10像素
        static int Horizontal = 50;  //水平方向总点数50
        static int Vertical = 100;   //垂直200像素
        struct line
        {
            int x1, y1, x2, y2;
            public void Move(int x1, int y1, int x2, int y2)
            {
                this.x1 = x1;
                this.y1 = y1;
                this.x2 = x2;
                this.y2 = y2;
            }
            public void paint(Graphics g)
            {
                g.DrawLine(Pens.Yellow, x1, y1, x2, y2);
                g.SmoothingMode = SmoothingMode.AntiAlias;
            }
        }
        struct point
        {
            public int x, y;
            public void Move(int x, int y)
            {

                this.x = x;
                this.y = y;
            }
            public void paint(Graphics g)
            {
                g.DrawEllipse(Pens.Red, x - 1, y - 1, 3, 3);
                g.SmoothingMode = SmoothingMode.AntiAlias;
            }
        }
        line[] l = new line[Horizontal];
        point p = new point();
        public Form1()
        {
            InitializeComponent();
        }
        Random r = new Random();
        private void timer1_Tick(object sender, EventArgs e)
        {
            draw(r.Next(Vertical));
        }
        void draw(int y)
        {
            int ii = i % Horizontal;
            y += 50;
            l[ii].Move(ii * Xinterval, y0, (ii + 1) * Xinterval, y);
            p.Move((ii + 1) * Xinterval, y);
            textBox_points.Text += p.x.ToString() + "  , " + p.y.ToString() + Environment.NewLine;
            i++;
            pictureBox_board.Invalidate();
            y0 = y;
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            base.OnPaint(e);
            for (int i = 0; i < Horizontal; i++)
            {
                l[i].paint(e.Graphics);
            }
            p.paint(e.Graphics);
        }
    }
}
ashlll0
2016-01-15 · TA获得超过929个赞
知道小有建树答主
回答量:1354
采纳率:81%
帮助的人:556万
展开全部

闲得无聊,做了一个

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式