模型标签——Canvas技术介绍

郭隆邦老师threejs教程学习笔记

2D绘图技术Canvas。

1.郭隆邦老师博客介绍Canvas:Canvas教程_HTML5教程_郭隆邦技术博客

2.W3C介绍Canvas:HTML Canvas 参考手册

3.菜鸟介绍Canvas:学习 HTML5 Canvas 这一篇文章就够了 | 菜鸟教程

Canvas与普通HTML和CSS比较

Canvas和普通HTML元素一样可以作为模型的标签使用,HTML和CSS的好处是实现一些常见的网页页面效果很方便,不过一些复杂的图像通过CSS也可以实现,但是相对来说没有Cnavas更为方便,Cnavas绘制一些图形效果更为灵活。

canvas作为模型标签

    // 绘制一个canvas画布 作为模型的标签显示模型信息
    const canvas = document.createElement("canvas");
    // 注意canvas画布绝对定位
    canvas.style.position = "absolute";
    canvas.width = 240;
    canvas.height = 60;
    const ctx = canvas.getContext('2d');
    // 矩形区域填充背景
    ctx.fillStyle = 'rgba(0,0,0,0.5)';
    ctx.fillRect(0, 0, 240, 60);
    ctx.beginPath();
    // 文字
    ctx.beginPath();
    ctx.translate(25, 30);
    ctx.font = "normal 24px 宋体"; //字体样式设置
    ctx.textBaseline = "middle"; //文本与fillText定义的纵坐标
    ctx.fillStyle = "#ffffff"; //文本填充颜色
    ctx.fillText("写字楼人数:", 0, 0);
    ctx.translate(140, 0);
    ctx.fillStyle = "#00ffff"; //文本填充颜色
    ctx.fillText("100人", 0, 0);
    document.body.appendChild(canvas)

效果图:

canvas画布标签数据更新

比如使用一个canvas画布表示一个楼层的信息,传入新的数据重新绘制canvas画布即可。

    // 绘制一个canvas画布 作为模型的标签显示模型信息
    const canvas = document.createElement("canvas");
    // 注意canvas画布绝对定位
    canvas.style.position = "absolute";
    canvas.width = 240;
    canvas.height = 60;
    //如果写字楼的人数变化了,比如后端通知前端,前端直接调用createCnavasTag()函数,输入新的人数重新绘制即可
    createCnavasTag(122);
    //封装一个canvas画布创建函数  number:人数
    function createCnavasTag(number) {
        // 每次调用的时候,清空当前画布
        //ctx.clearRect(0,0,800,600);
        canvas.width = 240;//重置画布尺寸,会清空
        const ctx = canvas.getContext('2d');
        // 矩形区域填充背景
        ctx.fillStyle = 'rgba(0,0,0,0.5)';
        ctx.fillRect(0, 0, 240, 60);
        ctx.beginPath();
        // 文字
        ctx.beginPath();
        ctx.translate(25, 30);
        ctx.font = "normal 24px 宋体"; //字体样式设置
        ctx.textBaseline = "middle"; //文本与fillText定义的纵坐标
        ctx.fillStyle = "#ffffff"; //文本填充颜色
        ctx.fillText("写字楼人数:", 0, 0);
        ctx.translate(140, 0);
        ctx.fillStyle = "#00ffff"; //文本填充颜色
        ctx.fillText(number+"人", 0, 0);
        document.body.appendChild(canvas)
    }

可以看到写字楼人数由100更新为122

效果实现

可以自己通过canvas代码直接实现一些UI效果,如果为了更快捷,也可以借助一些库或别人写好的UI组件,比如echarts库:EChartsJS | Home Page,比如百度“canvas 进度条”查看一些开源的canvas实现的UI组件效果。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值