电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue+canvas繪制時(shí)間軸的方法

瀏覽:7日期:2023-02-15 10:23:01

本文實(shí)例為大家分享了vue canvas繪制時(shí)間軸的具體代碼,供大家參考,具體內(nèi)容如下

最近在研究canvas繪制時(shí)間軸,直接上代碼,希望分享能給大家?guī)?lái)幫助,效果如下:

vue+canvas繪制時(shí)間軸的方法

代碼如下,可以拷貝到vue項(xiàng)目中直接預(yù)覽

<template> <div> <canvas height='27'></canvas> </div></template><script>export default { name: ’pathwaytrack’, data() { return { screenWidth: document.body.clientWidth } }, mounted() { let that = this that.carveTimeScale(1200, 1, 10, 0, 10) let canvasColor = ’#999999’ let initTime = 12000 setInterval(() => { initTime += 1000 that.carveTimeScale(1200, 1, 10, initTime, 10) }, 1000); }, methods: { /** * 分割像素刻度 * width: 寬度 ms:一個(gè)小刻度的毫秒數(shù) pxMs:10像素一個(gè)小刻度 pageShowStartTime:初始時(shí)間(毫秒) 一大段間隔時(shí)長(zhǎng)(秒) */ carveTimeScale(width, ms, pxMs, pageShowStartTime, intervalTime) { let canvasId = document.getElementById(’time_line’) let ctx = canvasId.getContext(’2d’) ctx.clearRect(0, 0, 1200, 60) ctx.fillStyle = ’#999999’ // 為防止蘋(píng)果屏幕2X顯示不正常 // 為防止蘋(píng)果屏幕2X顯示不正常 var getPixelRatio = function (context) {var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1return (window.devicePixelRatio || 1) / backingStore } let ratio = getPixelRatio(ctx) let msOffset = this.startOffsetTime(pageShowStartTime, ms) // 開(kāi)始的偏移時(shí)間 ms let pxOffset = msOffset / 1000 * pxMs // 開(kāi)始的偏移距離 px let leftDistance = 0 // 到左側(cè)的距離 let leftDistanceTime = 0 // 到左側(cè)的時(shí)間 let beginX = 0 let beginY = 0 for (let i = 0; i < width / (ms * pxMs); i++) {leftDistance = pxOffset + i * (ms * pxMs) // 距離 = 開(kāi)始的偏移距離 + 格數(shù) * px/格leftDistanceTime = pageShowStartTime + msOffset + i * ms // 時(shí)間 = 左側(cè)開(kāi)始時(shí)間 + 偏移時(shí)間 + 格數(shù) * msbeginX = pxOffset + i * (ms * pxMs)let canvasColorlet showTime = pageShowStartTime + beginX / pxMs * 1000if (showTime % (intervalTime * 1000) === 0) { beginY = 0 ctx.font = ’12px Arial’ ctx.fillText(this.changeTime(showTime, 1), beginX + 10, 22) canvasColor = ’#999999’ ctx.fillStyle = ’#B1B1B1’ this.drawLine(leftDistance, beginY, leftDistance, 20, canvasColor, 1)} else if (showTime % intervalTime == 0) { beginY = 0 canvasColor = ’#999999’ this.drawLine(leftDistance, beginY, leftDistance, 10, canvasColor, 1)} } }, /** * 根據(jù)傳入?yún)?shù)畫(huà)線(xiàn) */ drawLine(beginX, beginY, endX, endY, color, width) { let canvasId = document.getElementById(’time_line’); let ctx = canvasId.getContext(’2d’); ctx.beginPath(); ctx.moveTo(beginX, beginY); ctx.lineTo(endX, endY); ctx.strokeStyle = color; ctx.lineWidth = width; ctx.stroke(); }, /** * 左側(cè)開(kāi)始時(shí)間的偏移,返回單位ms */ startOffsetTime(timestamp, step) { let remainder = timestamp % step return remainder ? step - remainder : 0 }, /** * 返回時(shí)間 */ changeTime(time, num) { let hour = 0 let minute = 0 let second = 0 second = time / 1000 if (second >= 3600) {minute = (second - (second % 60)) / 60hour = parseInt((minute / 60).toString())minute = minute % 60/* eslint-disable */hour >= 10 ? hour : hour = ’0’ + hourminute >= 10 ? minute : minute = ’0’ + minutesecond = second % 60second >= 10 ? second : second = ’0’ + second/* eslint-enable */return hour + ’:’ + minute + ’:’ + second } if (second < 3600 && second >= 60) {hour = ’00’minute = parseInt((second / 60).toString())/* eslint-disable */minute >= 10 ? minute : minute = ’0’ + minutesecond = second % 60second >= 10 ? second : second = ’0’ + second/* eslint-enable */return hour + ’:’ + minute + ’:’ + second } if (second < 60) {hour = ’00’minute = ’00’second = parseInt(second)/* eslint-disable */second >= 10 ? second : second = ’0’ + second/* eslint-enable */return hour + ’:’ + minute + ’:’ + second } } }}</script><style lang='less' scoped> canvas { background: black; }</style>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 交通信号灯生产厂家_红绿灯厂家_电子警察监控杆_标志杆厂家-沃霖电子科技 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 红酒招商加盟-葡萄酒加盟-进口红酒代理-青岛枞木酒业有限公司 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 广州印刷厂_广州彩印厂-广州艺彩印务有限公司 | 披萨石_披萨盘_电器家电隔热绵加工定制_佛山市南海区西樵南方综合保温材料厂 | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 天津散热器_天津暖气片_天津安尼威尔散热器制造有限公司 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | PO膜_灌浆膜及地膜供应厂家 - 青州市鲁谊塑料厂 | 洁净棚-洁净工作棚-无菌室-净化工程公司_北京卫护科技有限公司 | 泰国试管婴儿_泰国第三代试管婴儿费用|成功率|医院—新生代海外医疗 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | 防锈油-助焊剂-光学玻璃清洗剂-贝塔防锈油生产厂家 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | 旋转气浴恒温振荡器-往复式水浴恒温振荡器-金怡百科 | 品牌广告服务平台,好排名,好流量,好生意。 | 钣金加工厂家-钣金加工-佛山钣金厂-月汇好 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 大巴租车平台承接包车,通勤班车,巴士租赁业务 - 鸿鸣巴士 | POS机官网 - 拉卡拉POS机免费办理|官网在线申请入口 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 猪I型/II型胶原-五克隆合剂-细胞冻存培养基-北京博蕾德科技发展有限公司 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | NM-02立式吸污机_ZHCS-02软轴刷_二合一吸刷软轴刷-厦门地坤科技有限公司 | 农产品溯源系统_农产品质量安全追溯系统_溯源系统 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 西装定制/做厂家/公司_西装订做/制价格/费用-北京圣达信西装 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 |