广告
返回顶部
首页 > 资讯 > 精选 >怎么在html5中利用Canvas绘图
  • 381
分享到

怎么在html5中利用Canvas绘图

2023-06-09 22:06:11 381人浏览 泡泡鱼
摘要

怎么在HTML5中利用canvas绘图?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、什么是CanvasCanvas 是H5的一部分,允许脚本语言动态渲染图像。Canva

怎么在HTML5中利用canvas绘图?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一、什么是Canvas

Canvas 是H5的一部分,允许脚本语言动态渲染图像。Canvas 定义一个区域,可以由html属性定义该区域的宽高,javascript代码可以访问该区域,通过一整套完整的绘图功能(api),在网页上渲染动态效果图。

二、Canvas 能做什么

游戏:毫无疑问,游戏在HTML5领域具有举足轻重的地位。HTML5在基于WEB的图像显示方面比Flash更加立体、更加精巧。

图表制作:图表制作时常被人们忽略,但无论企业内部还是企业间交流合作都离不开图表。现在一些开发者使用HTML/CSS完成图标制作。当然,使用SVG(可缩放矢量图形)来完成图表制作也是非常好的方法。

字体设计:对于字体的自定义渲染将完全可以基于Web,使用HTML5技术进行实现。

图形编辑器:图形编辑器能够100%基于Web实现。

其他可嵌入网站的内容:类似图表、音频、视频,还有许多元素能够更好地与Web融合,并且不需要任何插件

三、Canvas基本用法

使用<canvas>必须先设置其width和height属性,指定可绘图区域大小,只指定宽高不添加样式或者绘制图像的话,在页面中将看不到该元素。

<canvas id='draw' width='200px' height='200px'></canvas>

绘制图像的话,我们首先要取到canvas并调用getContext()方法,然后传入上下文名字(2D/3D),2D有两种基本绘图操作|填充(fillStyle)|描边(strokeStyle)|,这两个属性默认值为#000

var draw = document.getElementById('draw');//确认浏览器是否支持<canvas>元素if(draw.getContext){        var context = draw.getContext('2d');    //给context绘制红色的边框    context.strokeStyle = '#f00';        //内部填充大草原的颜色    context.fillStyle = '#0f0';}

使用toDataURL()方法,可以导出<canvas>元素上绘制的图像

var draw = document.getElementById('draw');if(draw.getContext){        //显示图像,toDataURL()获取到的是一串base64的字符串    var drawURL = draw.toDataURL('image/png');    var image = document.createElement('img');    image.src = drawURL;    document.body.appendChild(image);           }

绘制矩形,主要有三个方法,fillRect()为矩形填充颜色、strokeRect()为矩形描边、clearRect()清除矩形。这三个方法都接收4个参数x/y/w/h,矩形的左上角坐标和宽高

var draw = document.getElementById('draw');//确认浏览器是否支持<canvas>元素if(draw.getContext){        var context = draw.getContext('2d');        //绘制红色矩形,绿色描边    context.fillStyle = '#f00';    context.strokeStyle = '#0f0';    context.strokeRect(10,10,50,50);    context.fillRect(10,10,50,50);        //绘制绿色矩形,红色描边    context.fillStyle = '#0f0';    context.strokeStyle = '#f00';    context.strokeRect(10,10,50,50);    context.fillRect(10,10,50,50);        //在两个矩形重叠的地方清除一个小矩形    context.clearRect(40,40,10,10);}

绘制路径,通过路径可以创造出复杂的形状和线条,要绘制路径,首先要调用beginPath()方法,再通过以下方法来实际的绘制路径

arc(x,y,radius,startAngle,endAngle,conterclockwise)
(x,y)圆心坐标、radius半径、(startAngle,endAngle)起始角度和终止角度、conterclockwise顺时针(false)/逆时针(true)

moveTo(x,y) 将游标移动到(x,y),不画线。可以用来修改所谓的上一点坐标*

arcTo(x1,y1,x2,y2,radius)
从上一点开始绘制一条曲线到(x2,y2),并且以给定的radius穿过(x1,y1)

lineTo(x,y) 从上一点开始绘制一条直线,到(x,y)

rect(x,y,width,height)
从(x,y)开始绘制一个矩形,宽高为width、height。这个方法绘制的是矩形路径,而非strokeRect()和fillRect()所绘制的独立的形状

//接下来绘制一个不带数字的时钟  var draw = document.getElementById('draw');if(draw.getContext){    var context = draw.getContext('2d');    //开始路径    context.beginPath();    //绘制外圆    context.arc(100,100,99,0,2*Math.PI,false);    //绘制内圆    context.moveTo(194,100);    context.arc(100,100,94,0,2*Math.PI,false);    //绘制分针    context.moveTo(100,100);    context.lineTo(100,15);    //绘制时针    context.moveTo(100,100);    context.lineTo(35,100);    //描边路径    context.stroke();    context.strokeStyle = '#f00';            }

6 . 绘制文本,主要有两个方法,fillText(),strokeText(),都接收四个参数|text(要绘制的文本)|x|y|最大像素宽度(可选)|,这两个方法都已下列三个属性为基础

font文字样式,大小,字体等

textAlign 文本对其方式|start|end|left|right|center|

textBaseline 文本的基线|top|hanging|middle|alphabetic|ideographic|bottom|      

 //在表盘绘制12点 context.font = 'bold 12px Arial'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.fillText('12',100,20);

7 . 变换

rotate(angel) 围绕原点旋转图像angle弧度

scale(scaleX,scaleY) 缩放图像,x*scaleX,y*scaleY  默认1

translate(x,y) 将坐标原点移动到(x,y)

var draw = document.getElementById('draw'); if(draw.getContext){    var context = draw.getContext('2d');    //开始路径    context.beginPath();    //绘制外圆    context.arc(100,100,99,0,2*Math.PI,false);    //绘制内圆    context.moveTo(194,100);    context.arc(100,100,94,0,2*Math.PI,false);    //变换原点    context.translate(100,100);    //旋转表针    context.rotate(1)    //绘制分针    context.moveTo(0,0);    context.lineTo(0,-85);    //绘制时针    context.moveTo(0,0);    context.lineTo(-65,0);    //描边路径    context.stroke();    context.strokeStyle = '#f00';            }

8 . 绘制图像,drawImage()

 var img = document.getElementByTagNames('image')[0]; context.drawImage(img,0,10,50,50,0,100,40,60);

9个参数: 要绘制的图像 原图像|x|y|w|h|  目标图像|x|y|w|h|

9 . 阴影和渐变

 阴影主要是以下几个属性值

  1.  shadowColor

  2.  shadowOffsetX : X轴阴影偏移量

  3.  shadowOffsetY : Y轴阴影偏移量

  4.  shadowBlur : 模糊像素数,默认0,不模糊

 var context = draw.getContext('2d'); //设置阴影 context.shadowColor = 'rgba(210,210,210,.5)'; context.shadowOffersetX = '5';  渐变 创建一个新的线性渐变 createLinearGradient()方法,有四个参数|x1|y1|x2|y2|分别为起点的坐标和终点的坐标 var gradient = context.createLinearGradient(30,30,70,70); gradient.addColorStop(0,'#fff');    //0表示开始 gradient.addColorStop(1,'#000');    //1表示结束 //使用定义好的渐变属性 context.fillStyle = gradient;    //填充的时候放入渐变 context.fillRect(30,30,50,50);

创建一个放射渐变 createRadialGradient(),六个参数|x1|y2|radius1|x2|y2|radius2|分别为第一个圆心和半径第二个圆心和半径,用法和线性渐变相同

10 . 使用图像数据,可以通过getImageData()取得原始图像数据。四个参数|x|y|w|h|。每个ImageData对象有三个属性,width/height/data,data是一个数组,内部存着每一个像素的数据,每个元素的值介于0-255之间

 var imgdata = context.getImageData(0,0,100,100); var data = imgdata.data,     red = data[0],     green = data[1],     blue = data[2],     alpha = data[3];  //实现一个灰色过滤器var draw = document.getElementById('draw');if(draw.getContext){    var context = draw.getContext('2d');    var img = document.getElementsByTagName('image')[0],        imageData,data,        i,len,average,        red,green,blue,alpha;    //绘制原始图像    context.drawImage(img,0,0,100,100);    //获取图像数据    imageData = context.getImageData(0,0,img.width,img.height);    data = imageData.data;    for(i=0,len=data.length;i<len;i+=4){        red = data[i];        green = data[i+1];        blue = data[i+2];        alpha = data[i+3];        //计算rgb的平均值        average = Math.floor((red+green+blue)/3);        //设置颜色值        data[i] = average;        data[i+1] = average;        data[i+2] = average;    }       imageData.data = data;    //把数据绘制在画布    context.putImageData(imageData,0,0)}

关于怎么在html5中利用Canvas绘图问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: 怎么在html5中利用Canvas绘图

本文链接: https://www.lsjlt.com/news/257962.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在html5中利用Canvas绘图
    怎么在html5中利用Canvas绘图?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、什么是CanvasCanvas 是H5的一部分,允许脚本语言动态渲染图像。Canva...
    99+
    2023-06-09
  • 怎么在Android中利用canvas绘图
    今天就跟大家聊聊有关怎么在Android中利用canvas绘图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MainActivity的代码如下:package exampl...
    99+
    2023-05-30
    android canvas
  • 怎么在HTML5中利用Canvas绘制一个K线图
    本篇文章为大家展示了怎么在HTML5中利用Canvas绘制一个K线图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。SVG 是一种使用 XML 描述 2D 图形的语言。 Canvas 通过 JavaS...
    99+
    2023-06-09
  • 怎么在HTML5中canvas进行绘图
    怎么在HTML5中canvas进行绘图?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。<canvas></canvas>是HTML5中新增...
    99+
    2023-06-09
  • 怎么在html5中利用canvas绘制一个圆环
    今天就跟大家聊聊有关怎么在html5中利用canvas绘制一个圆环,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实现过程:首先:html部分代码如下:<canvas ...
    99+
    2023-06-09
  • HTML5中Canvas怎么绘制图片
    这篇文章给大家分享的是有关HTML5中Canvas怎么绘制图片的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。获取Image对象,new出来定义Image对象的src属性,参数:图片路径定义Image对象的onlo...
    99+
    2023-06-09
  • html5中怎么利用Canvas绘制椭圆
    html5中怎么利用Canvas绘制椭圆,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 概述 HTML5中的C...
    99+
    2022-10-19
  • 怎么用HTML5的canvas来绘图
    本文小编为大家详细介绍“怎么用HTML5的canvas来绘图”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用HTML5的canvas来绘图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学...
    99+
    2022-10-19
  • 怎么在html5中利用Canvas旋转图片
    这篇文章给大家介绍怎么在html5中利用Canvas旋转图片,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。移动canvas原点var img = document.getElementBy...
    99+
    2023-06-09
  • 怎么在HTML5中利用canvas绘制哆啦A梦头部
    怎么在HTML5中利用canvas绘制哆啦A梦头部?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。效果如下:代码如下:<div class="dorae...
    99+
    2023-06-15
  • HTML5怎么在canvas中绘制矩形附效果图
    这篇文章主要讲解了“HTML5怎么在canvas中绘制矩形附效果图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML5怎么在canvas中绘制矩形附效果...
    99+
    2022-10-19
  • 怎么用HTML5的Canvas API绘制图形
    本篇内容介绍了“怎么用HTML5的Canvas API绘制图形”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2022-10-19
  • HTML5怎么在canvas中绘制文本
    这篇文章主要介绍“HTML5怎么在canvas中绘制文本”,在日常操作中,相信很多人在HTML5怎么在canvas中绘制文本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HT...
    99+
    2022-10-19
  • 怎么利用HTML5中的Canvas绘制一张笑脸
    这篇文章主要讲解了“怎么利用HTML5中的Canvas绘制一张笑脸”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用HTML5中的Canvas绘制一张笑...
    99+
    2022-10-19
  • 怎么调用HTML5的Canvas API绘制图形
    这篇文章主要讲解了“怎么调用HTML5的Canvas API绘制图形”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么调用HTML5的Canvas API绘...
    99+
    2022-10-19
  • html5怎么使用canvas绘制一张图片
    本篇内容主要讲解“html5怎么使用canvas绘制一张图片”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5怎么使用canvas绘制一张图片”吧!<...
    99+
    2022-10-19
  • HTML5 Canvas怎么绘制文本及图片
    这篇文章主要讲解了“HTML5 Canvas怎么绘制文本及图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML5 Canvas怎么绘制文本及图片”吧!...
    99+
    2022-10-19
  • HTML5中怎么用canvas绘制曲线
    本文小编为大家详细介绍“HTML5中怎么用canvas绘制曲线”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML5中怎么用canvas绘制曲线”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2022-10-19
  • html5中怎么用Canvas绘制椭圆
    本篇内容主要讲解“html5中怎么用Canvas绘制椭圆”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5中怎么用Canvas绘制椭圆”吧! 概述 H...
    99+
    2022-10-19
  • HTML5中怎么用canvas绘制线条
    本篇内容介绍了“HTML5中怎么用canvas绘制线条”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! &...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作