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

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
了解H5代码:HTML5的基本原理了解H5代码:HTML5的基本原理Apr 17, 2025 am 12:08 AM

HTML5是构建现代网页的关键技术,提供了许多新元素和功能。1.HTML5引入了语义化元素如、、等,增强了网页结构和SEO。2.支持多媒体元素和,无需插件即可嵌入媒体。3.表单增强了新输入类型和验证属性,简化了验证过程。4.提供了离线和本地存储功能,提升了网页性能和用户体验。

H5代码:Web开发人员的最佳实践H5代码:Web开发人员的最佳实践Apr 16, 2025 am 12:14 AM

H5代码的最佳实践包括:1.使用正确的DOCTYPE声明和字符编码;2.采用语义化标签;3.减少HTTP请求;4.使用异步加载;5.优化图像。这些实践能提升网页的效率、可维护性和用户体验。

H5:网络标准和技术的发展H5:网络标准和技术的发展Apr 15, 2025 am 12:12 AM

Web标准和技术从HTML4、CSS2和简单的JavaScript演变至今,经历了显着的发展。 1)HTML5引入了Canvas、WebStorage等API,增强了Web应用的复杂性和互动性。 2)CSS3增加了动画和过渡功能,使页面效果更加丰富。 3)JavaScript通过Node.js和ES6的现代化语法,如箭头函数和类,提升了开发效率和代码可读性,这些变化推动了Web应用的性能优化和最佳实践的发展。

H5是HTML5的速记吗?探索细节H5是HTML5的速记吗?探索细节Apr 14, 2025 am 12:05 AM

H5不仅仅是HTML5的简称,它代表了一个更广泛的现代网页开发技术生态:1.H5包括HTML5、CSS3、JavaScript及相关API和技术;2.它提供更丰富、互动、流畅的用户体验,能在多设备上无缝运行;3.使用H5技术栈可以创建响应式网页和复杂交互功能。

H5和HTML5:网络开发中常用的术语H5和HTML5:网络开发中常用的术语Apr 13, 2025 am 12:01 AM

H5与HTML5指的是同一个东西,即HTML5。HTML5是HTML的第五个版本,带来了语义化标签、多媒体支持、画布与图形、离线存储与本地存储等新功能,提升了网页的表现力和交互性。

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

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

H5:工具,框架和最佳实践H5:工具,框架和最佳实践Apr 11, 2025 am 12:11 AM

H5开发需要掌握的工具和框架包括Vue.js、React和Webpack。1.Vue.js适用于构建用户界面,支持组件化开发。2.React通过虚拟DOM优化页面渲染,适合复杂应用。3.Webpack用于模块打包,优化资源加载。

HTML5的遗产:当前了解H5HTML5的遗产:当前了解H5Apr 10, 2025 am 09:28 AM

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器