首页 web前端 H5教程 HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图_html5教程技巧

HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图_html5教程技巧

May 16, 2016 pm 03:46 PM

HTML5火的正热,最近有个想法也是要用到HTML的相关功能,所以也要好好学习一把。

好好看了一下Canvas的功能,感觉HTML5在客户端交互的功能性越来越强了,今天看了一下Canvas绘图,下边是几个实例,记下以备后用。

1、使用Canvas绘制直线:


 

XML/HTML Code复制内容到剪贴板
  1. html>  
  2. html>  
  3.     >  
  4.          字符集="UTF- 8">  
  5.     >  
  6.     样式 类型="text/ css">  
  7.         画布{border:dashed 2px #CCC}   
  8.     风格>  
  9.     脚本 类型="text/ javascript">  
  10.         函数 $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         函数 pageLoad(){   
  14.             var 可以 = $$('can');   
  15.             var 可以罐子 = can.getContext('2d');   
  16.             cans.moveTo(20,30);//第一个起点   
  17.             cans.lineTo(120,90);//第二个点   
  18.             cans.lineTo(220,60);//第三个点(以第二个点为起点)   
  19.             cans.lineWidth=3;   
  20.             cans.行程样式 = '红色';   
  21.             罐头.中风();   
  22.         }  
  23.     script>  
  24.     <body onload="pageLoad();">  
  25.         <canvas id="can" width="400px" height="300px">4canvas>  
  26.     body>  
  27. html>  

这里用到的两个API方法,moveTo和lineTo分别是线段的起点和终点坐标,变量为(X坐标,Y坐标),strokeStyle、stroke分别路径绘制样式和绘制路径。

2、绘制渐变线条

渐变线条就是颜色有渐变的效果,当然渐变的样式可以遵循路径的方向也可以不遵循路径的方向:

XML/HTML Code复制内容到剪贴板
  1. html>  
  2. html>  
  3.     >  
  4.          字符集="UTF- 8">  
  5.     >  
  6.     样式 类型="text/ css">  
  7.         画布{border:dashed 2px #CCC}   
  8.     风格>  
  9.     脚本 类型="text/ javascript">  
  10.         函数 $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         函数 pageLoad(){   
  14.             var 可以 = $$('can');   
  15.             var 可以罐子 = can.getContext('2d');   
  16.             cans.moveTo(0,0);   
  17.             cans.lineTo(400,300);   
  18.             var gnt1 = cans.createLinearGradient(0,0,400,300);//线性变化的起止坐标   
  19.             gnt1.addColorStop(0,'red');//创建变换的开始颜色,0表示偏移量,个人理解为直线上的相对位置,最大为1,一个变换中可以写任意个渐变颜色   
  20.             gnt1.addColorStop(1,'黄色');   
  21.             cans.lineWidth=3;   
  22.             cans.行程样式 = gnt1;   
  23.             罐头.中风();   
  24.         }  
  25.     script>  
  26.     <body onload="pageLoad();">  
  27.         <canvas id="can" width="400px" height="300px">4canvas>  
  28.     body>  
  29. html>  

3、绘制矩形或正方形:

这种矩形框如果使用HTML4只能使用后台代码才能生成了,现在HTML5提供的Canvas功能却很容易就能绘制,所以说HTML5的优越性是相当高的。

XML/HTML Code复制内容到剪贴板
  1. html>  
  2. html>  
  3.     >  
  4.          字符集="UTF- 8">  
  5.     >  
  6.     样式 类型="text/ css">  
  7.         画布{border:dashed 2px #CCC}   
  8.     风格>  
  9.     脚本 类型="text/ javascript">  
  10.         函数 $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         函数 pageLoad(){   
  14.             var 可以 = $$('can');   
  15.             var 可以罐子 = can.getContext('2d');   
  16.             cans.fillStyle = '黄色';   
  17.             cans.fillRect(30,30,340,240);   
  18.         }   
  19.     脚本>  
  20.     body onload="pageLoad( );">  
  21.         画布 id="可以"  宽度="400px" 高度="300px">4画布>   
  22.     身体>  
  23. html>  

这里使用了一个方法——fillRect()从字面意思也能知道这个就是填充一个矩形,这里的参数值得说明一下fillRect(X,Y,Width,Height),这个和数学里的坐标是不一样的,具体请看

这里的X,Y是相对Canvas左上角的起点开始的,谨记!!

4、绘制一个简单的矩形框

上例中讲到要绘制一个矩形块,填充了颜色,这个例子只是简单地绘制一个矩形而不实现填充效果。

XML/HTML Code复制内容到剪贴板
  1. html>  
  2. html>  
  3.     >  
  4.          字符集="UTF- 8">  
  5.     >  
  6.     样式 类型="text/ css">  
  7.         画布{border:dashed 2px #CCC}   
  8.     风格>  
  9.     脚本 类型="text/ javascript">  
  10.         函数 $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         函数 pageLoad(){   
  14.             var 可以 = $$('can');   
  15.             var 可以罐子 = can.getContext('2d');   
  16.             cans.行程样式 = '红色';   
  17.             cans.StrongRect(30,30,340,240);   
  18.         }   
  19.     脚本>  
  20.     body onload="pageLoad( );">  
  21.         画布 id="可以"  宽度="400px" 高度="300px">4画布>   
  22.     身体>  
  23. html>  
  24.   

这个很简单,和上例一样,就是将fill替换成了stroke,具体详见上例。

 5、绘制一个线性渐变的矩形

渐变是填充的一种相当不错的效果,结合实例2和实例3,我们可以创建一个渐变的矩形

XML/HTML Code复制内容到剪贴板
  1. html>  
  2. html>  
  3.     >  
  4.          字符集="UTF- 8">  
  5.     >  
  6.     样式 类型="text/ css">  
  7.         画布{border:dashed 2px #CCC}   
  8.     风格>  
  9.     脚本 类型="text/ javascript">  
  10.         函数 $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         函数 pageLoad(){   
  14.             var 可以 = $$('can');   
  15.             var 可以罐子 = can.getContext('2d');   
  16.             var gnt1 = 罐头.createLinearGradient(10,0,390,0);   
  17.             gnt1.addColorStop(0,'红色');   
  18.             gnt1.addColorStop(0.5,'绿色');   
  19.             gnt1.addColorStop(1,'蓝色');   
  20.             cans.fillStyle = gnt1;   
  21.             cans.fillRect(10,10,380,280);   
  22.         }  
  23.     script>  
  24.     <body onload="pageLoad();">  
  25.         <canvas id="can" width="400px" height="300px">4canvas>  
  26.     body>  
  27. html>  
  28.   

不解释了,记住fillRect(X,Y,Width,Height)就行了。

6、填充一个圆形


圆形的用途很广,当然也包含了椭圆。

XML/HTML Code复制内容到剪贴板
  1. html>  
  2. html>  
  3.     >  
  4.          字符集="UTF- 8">  
  5.     >  
  6.     样式 类型="text/ css">  
  7.         画布{border:dashed 2px #CCC}   
  8.     风格>  
  9.     脚本 类型="text/ javascript">  
  10.         函数 $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         函数 pageLoad(){   
  14.             var 可以 = $$('can');   
  15.             var 可以罐子 = can.getContext('2d');   
  16.             cans.beginPath();   
  17.             cans.arc(200,150,100,0,Math.PI*2,true);   
  18.             cans.closePath();   
  19.             cans.fillStyle = 'green';//本申请初次使用的是红色,截图一看,傻眼了,怕上街被爱国者打啊,其实你懂的~~   
  20.             cans.fill();   
  21.         }  
  22.     script>  
  23.     <body onload="pageLoad();">  
  24.         <canvas id="can" width="400px" height="300px">4canvas>  
  25.     body>  
  26. html>  
  27.   

这里的arc方法的用法是 arc(X,Y,Radius,startAngle,endAngle,anticlockwise),意思是(圆心X坐标,圆心Y坐标,半径,开始角度(弧度),结束角度弧度,是否按照顺时针画);

arc中各参数比较:

a、cans.arc(200,150,100,0,Math.PI,true);

c、cans.arc(200,150,100,0,Math.PI/2,true);

c、cans.arc(200,150,100,0,Math.PI/2,true);

d、cans.arc(200,150,100,0,Math.PI/2,false);

 

 7、圆形区块

 

XML/HTML Code复制内容到剪贴板
  1. html>  
  2. html>  
  3.     >  
  4.          字符集="UTF- 8">  
  5.     >  
  6.     样式 类型="text/ css">  
  7.         画布{border:dashed 2px #CCC}   
  8.     风格>  
  9.     脚本 类型="text/ javascript">  
  10.         函数 $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         函数 pageLoad(){   
  14.             var 可以 = $$('can');   
  15.             var 可以罐子 = can.getContext('2d');   
  16.             cans.beginPath();   
  17.             cans.arc(200,150,100,0,Math.PI*2,false);   
  18.             cans.closePath();   
  19.             cans.lineWidth = 5;   
  20.             cans.行程样式 = '红色';   
  21.             罐头.中风();   
  22.         }  
  23.     script>  
  24.     <body onload="pageLoad();">  
  25.         <canvas id="can" width="400px" height="300px">4canvas>  
  26.     body>  
  27. html>  

这里不解释了,和上边的例子相同,lineWidth是控制线条的宽度的。

8、圆形渐变

 

XML/HTML Code复制内容到剪贴板
  1. html>  
  2. html>  
  3.     >  
  4.          字符集="UTF- 8">  
  5.     >  
  6.     样式 类型="text/ css">  
  7.         画布{border:dashed 2px #CCC}   
  8.     风格>  
  9.     脚本 类型="text/ javascript">  
  10.         函数 $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         函数 pageLoad(){   
  14.             var 可以 = $$('can');   
  15.             var 可以罐子 = can.getContext('2d');   
  16.             var gnt = 罐头.createRadialGradient(200,300,50,200,200,200);   
  17.             gnt.addColorStop(1,'red');   
  18.             gnt.addColorStop(0,'绿色');   
  19.             cans.fillStyle = gnt;   
  20.             cans.fillRect(0,0,800,600);   
  21.         }  
  22.     script>  
  23.     <body onload="pageLoad();">  
  24.         <canvas id="can" width="800px" height="600px">4canvas>  
  25.     body>  
  26. html>  

这里需要说明的是createRadialGradient方法,参数有(Xstart,Ystart,radiusStart,XEnd,YEnd,radiusEnd),也就是说,它在实行渐变时,使用了两个圆,一个是原始的圆,一个是渐变式圆,其实,这种通过坐标与半径控制的方式可以实现很多样式,比如

立体圆

 

XML/HTML Code复制内容到剪贴板
  1. var gnt = cans.createRadialGradient(200,150,0,200,50,250);   
  2. gnt.addColorStop(0,'red');   
  3. gnt.addColorStop(1,'#333');  
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

h5项目怎么运行 h5项目怎么运行 Apr 06, 2025 pm 12:21 PM

运行 H5 项目需要以下步骤:安装 Web 服务器、Node.js、开发工具等必要工具。搭建开发环境,创建项目文件夹、初始化项目、编写代码。启动开发服务器,使用命令行运行命令。在浏览器中预览项目,输入开发服务器 URL。发布项目,优化代码、部署项目、设置 Web 服务器配置。

H5页面制作究竟指什么 H5页面制作究竟指什么 Apr 06, 2025 am 07:18 AM

H5 页面制作是指使用 HTML5、CSS3 和 JavaScript 等技术,创建跨平台兼容的网页。其核心在于浏览器解析代码,渲染结构、样式和交互功能。常见技术包括动画效果、响应式设计和数据交互。为避免错误,应使用开发者工具调试;而性能优化和最佳实践则包括图像格式优化、减少请求和代码规范等,以提高加载速度和代码质量。

h5怎么制作点击图标 h5怎么制作点击图标 Apr 06, 2025 pm 12:15 PM

制作 H5 点击图标的步骤包括:在图像编辑软件中准备方形源图像。在 H5 编辑器中添加交互性,设置点击事件。创建覆盖整个图标的热点。设置点击事件的操作,如跳转页面或触发动画。导出 H5 文档为 HTML、CSS 和 JavaScript 文件。将导出的文件部署到网站或其他平台。

什么是H5编程语言? 什么是H5编程语言? Apr 03, 2025 am 12:16 AM

H5不是独立编程语言,而是HTML5、CSS3和JavaScript的集合,用于构建现代Web应用。1.HTML5定义网页结构和内容,提供新标签和API。2.CSS3控制样式和布局,引入动画等新特性。3.JavaScript实现动态交互,通过DOM操作和异步请求增强功能。

H5页面制作是前端开发吗 H5页面制作是前端开发吗 Apr 05, 2025 pm 11:42 PM

是的,H5页面制作是前端开发的重要实现方式,涉及HTML、CSS和JavaScript等核心技术。开发者通过巧妙结合这些技术,例如使用&lt;canvas&gt;标签绘制图形或使用JavaScript控制交互行为,构建出动态且功能强大的H5页面。

H5页面制作适合哪些应用场景 H5页面制作适合哪些应用场景 Apr 05, 2025 pm 11:36 PM

H5(HTML5)适合应用于轻量级应用,如营销活动页面、产品展示页面和企业宣传微网站。它优势在于跨平台性和丰富的交互性,但局限性在于复杂的交互和动画、本地资源访问和离线功能。

h5怎么制作弹窗 h5怎么制作弹窗 Apr 06, 2025 pm 12:12 PM

H5 弹窗制作步骤:1. 确定触发方式(点击式、时间式、退出式、滚动式);2. 设计内容(标题、正文、行动按钮);3. 设置样式(大小、颜色、字体、背景);4. 实现代码(HTML、CSS、JavaScript);5. 测试和部署。

H5指的是什么?探索上下文 H5指的是什么?探索上下文 Apr 12, 2025 am 12:03 AM

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

See all articles