HTML5 Canvas的基本用法介绍

本篇文章给大家带来的内容是关于html5 canvas的基本用法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

canvas 是 HTML5 当中我最喜欢的所有新特性中我最喜欢的一个标签了。因为它太强大了,各种有意思的特效都可以实现。

1. canvas 的基本使用方法

– 它是一个行内块元素
– 默认大小是 300 x 150,不能在 css 里给他设置样式,只能在标签内写它的属性。如 width = 400,height = 300
– 获取画布
   var canvas = document。querySelector(“canvas”)
– 获取画笔(上下文)
   var ctx = canvas.getContext(‘2d’)    

2. canvas 绘制基本的图形

填充矩形
ctx.fillRect(0,0,100,100)
fill:跟填充有关
Rect: 描绘一个矩形

填充图形设置样式
ctx.fillStyle = ‘green’

立即学习“前端免费学习笔记(深入)”;

描边矩形
ctx.strokeRect(100,100,100,100)

描边图形设置样式
ctx.strokeStyle = ‘white’
ctx.lineWidth = 100

清除整个画布
ctx.clearRect(0,0,canvas.width,canvas.height)

画线段
ctx.moveTo(100,100)
ctx.lineTo(100,100)

描边
ctx.stroke()

填充
ctx.fill()-

起始点和结束点连接
ctx.closePath()
ctx.save()开头
   ……
ctx.restore()结尾

3. 画布时钟

使用画布我们可以画一个时钟,包括刻度和时针,每一秒走的刻度可以用 Data 对象通过定时器来时时更新。

var canvas = document.querySelector("canvas");    var ctx = canvas.getContext("2d");    function move() {        ctx.save()            ctx.translate(300,300)            //  初始化一些公共的样式            ctx.lineCap = 'round'            ctx.strokeStyle = 'black'            ctx.lineWidth = 8            ctx.scale(0.5,0.5)            // 画外面的圆            ctx.save();                ctx.beginPath();                ctx.strokeStyle = 'gold';                ctx.arc(0,0,150,0,2*Math.PI);                ctx.stroke();            ctx.restore();            // 画里面的刻度            ctx.save()                ctx.beginPath();                for (var i=0; i < 12; i++) {                    ctx.moveTo(0,-125);                    ctx.lineTo(0,-140);                    ctx.stroke()                    ctx.rotate(30*Math.PI/180)                }            ctx.restore()            // 分针刻度            ctx.save()                ctx.lineWidth = 3                for (var i = 0; i < 60; i++) {                    if (i % 5 != 0){                        ctx.beginPath()                        ctx.moveTo(0,-135);                        ctx.lineTo(0,-140);                        ctx.stroke()                    }                    ctx.rotate(6*Math.PI/180)                }            ctx.restore()            // 当前时间            var date = new Date()            var s = date.getSeconds()            var min = date.getMinutes() + s/60            var h = date.getHours() + min/60            // 时针            ctx.save()                ctx.rotate(30*h*Math.PI/180)                ctx.lineWidth = 14                ctx.beginPath()                ctx.moveTo(0,-80)                ctx.lineTo(0,20)                ctx.stroke()            ctx.restore()            // 分针            ctx.save()                ctx.lineWidth = 10                ctx.rotate(6*min*Math.PI/180)                ctx.beginPath()                ctx.rotate(-30*Math.PI/180)                ctx.moveTo(0,-120)                ctx.lineTo(0,30)                ctx.stroke()            ctx.restore()            //秒针            ctx.save()                ctx.lineWidth = 6                ctx.strokeStyle = 'pink'                ctx.fillStyle = 'pink'                ctx.rotate(6*s*Math.PI/180)                ctx.beginPath()                ctx.arc(0,0,10,0,2*Math.PI)                ctx.fill()                ctx.beginPath()                ctx.moveTo(0,-125)                ctx.lineTo(0,30)                ctx.stroke()                ctx.beginPath()                ctx.arc(0,-135,10,0,2*Math.PI)                ctx.stroke()            ctx.restore()        ctx.restore()    }    setInterval(function () {        ctx.clearRect(0,0,canvas.width,canvas.height)        move()    },1000)

登录后复制

静止的图像如下图。

1056609250-5bf676267a57f_articlex.png

刮刮卡效果

使用 canvas 的图形合成的属性可以实现图片合成的效果。具体应用于刮刮卡。
globalCompositeOperation属性设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上
源图像 = 您打算放置到画布上的绘图
目标图像 = 您已经放置在画布上的绘图

3627601659-5bf676cdb872b_articlex.png

var  canvas = document.querySelector("canvas")    var ctx = getCtx()    log(ctx)    ctx.fillStyle = 'yellow'    ctx.fillRect(0,0,400,400)    ctx.globalCompositeOperation = 'destination-out';    // 鼠标按下    canvas.onmousedown = function (event) {        ctx.beginPath()        ctx.arc(event.clientX - canvas.offsetLeft,event.clientY - canvas.offsetTop,            20,0,2*Math.PI)        ctx.fill()        // 鼠标移动        document.onmousemove = function (event) {            ctx.beginPath()            ctx.arc(event.clientX - canvas.offsetLeft,event.clientY - canvas.offsetTop,            20,0,2*Math.PI)            ctx.fill()        }        // 鼠标抬起        document.onmouseup = function () {            document.onmousemove = document.onmouseup = null        }        return false    }

登录后复制

964013326-5bf6bf6218884_articlex.png

以上就是HTML5 Canvas的基本用法介绍的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2908565.html

(0)
上一篇 2025年3月11日 03:10:46
下一篇 2025年3月11日 03:10:54

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • input实现文字超出省略号(代码示例)

    本篇文章给大家带来的内容是关于input实现文字超出省略号(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 input实现文字省略号功能 普通元素实现文字超出宽度自动变成省略号非常简单,给元素加个宽度,然后再加这…

    2025年3月11日
    100
  • svg和css3实现环形渐变进度条的代码示例

    本篇文章给大家带来的内容是关于svg和css3实现环形渐变进度条的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在负责的项目中,有一个环形渐变读取进度的效果的需求,于是在网上查阅相关资料整理一下。 代码如下: T…

    编程技术 2025年3月11日
    200
  • HTML5中表格嵌套规则是什么

    这篇文章来给大家解释一下html5中表格嵌套规则是什么?下面我们来看具体的内容。 我们下来看一段HTML5中表格嵌套的代码: 登录后复制          parent-cell0      parent-cell1            …

    2025年3月11日
    200
  • SVG是什么

    svg是什么?svg有什么用?为什么要使用svg?本篇文章就给大家介绍一下svg的相关知识,让大家了解使用svg的好处,下面我们来看具体内容。 SVG是什么?有什么用? SVG是一种基于XML的矢量图形格式,用于在Web和其他环境中显示各种…

    2025年3月11日 编程技术
    200
  • 如何在HTML5中使用SVG

    在html5中我们可以通过使用标签内联svg,使用html的标签、标签、标签、 SVG是一种矢量图形格式,可以随着Web页面的大小变化重新绘制以适应其尺寸,不会出现任何失真的情况;十分适合在响应式Web设计中使用。本篇文章就给大家具体介绍在…

    2025年3月11日 编程技术
    200
  • html5是什么意思

    HTML5是超文本标记语言的最新版本,也就是描述网页的代码,html5实际上是三种代码形式,首先是HTML提供结构,其次是层叠样式表负责网站的样式和布局,最后是JavaScript是给网站添加动态功能。 本文操作环境:Windows7系统、…

    2025年3月11日
    200
  • 如何在HTML5画布中绘制文本图形

    在html5中,首先需要使用标签创建画布,然后在画布中使用javascript的font属性、filltext()或stroketext()方法来绘制文本图形。 HTML5的标签可以用于在网页上绘制各种图形,那么如何绘制文本图形?本篇文章就…

    2025年3月11日 编程技术
    200
  • H5使用react组件实现拍照、选择图片上传

    本篇文章给大家带来的内容是关于h5使用react组件实现拍照、选择图片上传,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 前段时间项目重构,改成SSR的项目,但之前用的图片选择上传组件不支持SSR(server-side-…

    编程技术 2025年3月11日
    200
  • 实现marquee滚动(代码示例)

    本篇文章给大家带来的内容是关于实现marquee滚动(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 背景:marquee标签在有些浏览器兼容性不好,就手动用原生js实现了下。 横着滚动效果链接描述 传奇无双12…

    编程技术 2025年3月11日
    200
  • HTML5有哪些新特性?HTML5新特性详解

    本篇文章给大家带来的内容是关于HTML5有哪些新特性?HTML5新特性详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。【推荐教程:Html5教程】 一:新增的功能 更加语义化的元素。 article、footer、hea…

    编程技术 2025年3月11日
    200

发表回复

登录后才能评论