【canvas】心電圖繪制

GIF 2023-10-30 18-46-11.gif
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            body {
                background-color: #333;
            }
            div {
                padding: 16px;
                width: 400px;
                height: 160px;
                background-color: #fff;
                border-radius: 6px;
                margin: 20px;
                position: relative;
            }
            canvas {
                position: absolute;
                left: 16px;
                top: 16px;
            }
        </style>
    </head>
    <body>
        <div>
            <canvas id="c1" width="400" height="160"></canvas>
            <canvas id="c2" width="400" height="160"></canvas>
        </div>
    </body>
    <script>
        let sd = [100, 180, 170, 60, 100, 100,100, 100, 100, 160, 80, 120, 100, 100, 100, 100, 100, 100, 100, 100]
        /** 畫(huà)線(xiàn) */
        let data = []
        function drawLine(ctx, shadow) {
            /** 開(kāi)始x坐標(biāo)、開(kāi)始y坐標(biāo)眯娱、結(jié)束x坐標(biāo)、結(jié)束y坐標(biāo) */
            let grd = ctx.createLinearGradient(0, 100, 400, 100)
            grd.addColorStop(0, `rgba(14, 185, 160, ${shadow ? 0.1 : 1})`)
            grd.addColorStop(1, `rgba(160, 209, 118, ${shadow ? 0.1 : 1})`)
            // 將漸變賦值給線(xiàn)的樣式
            ctx.strokeStyle = grd
            // 高大約170+
            let pyX = shadow ? 6 : 0
            ctx.beginPath()
            let newData = data.map(item => {
                return 160 - (item / 200) * 140
            })
            // console.log(newData)
            // console.log('***********')
            // ctx.moveTo(0, endPoint)
            newData.forEach((item, index) => {
                let x = index * 4
                ctx.lineTo(x, item + pyX)
            })
            ctx.lineWidth = shadow ? 5 : 2
            ctx.stroke()
        }
        function drwaBg(ctx) {
            /*1.繪制網(wǎng)格*/
            /*2.網(wǎng)格的大小*/
            var lineNumber = 6
            var canvasHeight = ctx.canvas.height - lineNumber
            var canvasWidth = ctx.canvas.width
            console.log(canvasWidth, canvasHeight)
            for (var i = 0; i < 6; i++) {
                let endPoint = i * 28 + 10.5
                ctx.beginPath()
                ctx.moveTo(0, endPoint)
                ctx.lineTo(canvasWidth, endPoint)
                ctx.strokeStyle = '#ddd'
                ctx.lineWidth = 1
                ctx.stroke()
            }
        }
        let c1 = document.querySelector('#c1')
        let ctx1 = c1.getContext('2d')
        drwaBg(ctx1)
        let c2 = document.querySelector('#c2')
        let ctx2 = c2.getContext('2d')
        let stop = 0
        let index = 0
        function loop() {
            if(data.length>= 100) {
                data.shift()
            }
            
            data.push(sd[index])
            index++
            if(index>20) {
                index = 0
            } 
            // console.log('-----------')
            // console.log(data)
        
            ctx2.clearRect(0, 0, 1000, 1000)
            drawLine(ctx2)
            drawLine(ctx2, true)
            
            window.requestAnimationFrame(() => {
                if(stop < 5000){
                    loop()
                }
                stop ++
            })
        }
        loop()
        
        
    </script>
</html>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末室埋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子伊约,更是在濱河造成了極大的恐慌姚淆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屡律,死亡現(xiàn)場(chǎng)離奇詭異腌逢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)超埋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)搏讶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人霍殴,你說(shuō)我怎么就攤上這事媒惕。” “怎么了来庭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵妒蔚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)肴盏,這世上最難降的妖魔是什么科盛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮菜皂,結(jié)果婚禮上土涝,老公的妹妹穿的比我還像新娘。我一直安慰自己幌墓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開(kāi)白布冀泻。 她就那樣靜靜地躺著常侣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弹渔。 梳的紋絲不亂的頭發(fā)上胳施,一...
    開(kāi)封第一講書(shū)人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音肢专,去河邊找鬼舞肆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛博杖,可吹牛的內(nèi)容都是我干的椿胯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼剃根,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哩盲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起狈醉,我...
    開(kāi)封第一講書(shū)人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤廉油,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后苗傅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抒线,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年渣慕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘶炭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡摇庙,死狀恐怖旱物,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卫袒,我是刑警寧澤宵呛,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站夕凝,受9級(jí)特大地震影響宝穗,放射性物質(zhì)發(fā)生泄漏户秤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一逮矛、第九天 我趴在偏房一處隱蔽的房頂上張望鸡号。 院中可真熱鬧,春花似錦须鼎、人聲如沸鲸伴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)汞窗。三九已至,卻和暖如春赡译,著一層夾襖步出監(jiān)牢的瞬間仲吏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工蝌焚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裹唆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓只洒,卻偏偏與公主長(zhǎng)得像许帐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毕谴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容