canvas入门笔记| 炫酷星空图星轨运动设计思路 | 您所在的位置:网站首页 › 渐变色彩画星空 › canvas入门笔记| 炫酷星空图星轨运动设计思路 |
最近在学习canvas,掌握了理论知识后,以星空图为例实践下。示例样式 1、画背景布是HTML的一个标签,可以直接设置width和height html: Your browser does not support HTML5 Canvas.//添加文本,用于不支持canvas的浏览器 复制代码在js中,也可以直接通过document.createElement('canvas')创建元素,并通过appendChild('canvas')插入。 引用并且初始化背景布 js: var canvas = document.getElementById('myCanvas');//引用canvas元素 var ctx= canvas.getContext('2d');//获取2D环境 canvas.width=window.innerWidth; canvas.height=window.innerHeight;//使canvas画布的大小为整个屏幕的大小 复制代码 2、画星星画星星我们需要另外的canvas元素,而且这个元素应该是动态创建的 var canvas2=document.createElement('canvas');//创建另外的canvas元素 var ctx2=canvas2.getContext('2d'); 复制代码 绘制圆形星星的绘制基础图形就是圆形,需要用到arc() 角度和弧度 在css的旋转中,用到的是角度(deg),而canvas中用到的是弧度(rad) rad = (π / 180) * deg //2π即为一周的弧度 复制代码 deg = (rad * 180) / π 复制代码在js中π即Math.PI 绘制圆和圆弧 arc(x, y, radius, startRad, endRad, [anticlockwise]); 复制代码其中: (x,y):绘制的圆/圆弧的圆心坐标; radius:半径 startRad:起始弧度; endRad:终止弧度; anticlockwise:绘制方向,true逆时针,false逆时针(默认);
示例中的星空是有渐变效果的,canvas中的渐变分为两种,线性渐变 和 径向渐变: 线性渐变 ctx.createLinearGradient(x1,y1,x2,y2);//(x1,y1)渐变起始点,(x2,y2)渐变终点 复制代码当x1=x2,y1≠y2垂直的线性渐变; 当x1≠x2,y1=y2水平的线性渐变; 当x1≠x2,y1≠y2角度的线性渐变; 径向渐变 ctx.createRadialGradient(x1,y1,r1,x2,y2,r2);//起始圆:圆心(x1,y1) 半径r1;结束圆:圆心(x2,y2) 半径r2 复制代码 添加渐变颜色 gradient.addColorStop(position,color) 复制代码position:指定渐变中颜色所在的相对位置(0~1); color:指定渐变中的颜色 填充渐变 ctx.fillStyle=gradient; 复制代码 画一个渐变颜色的星星 var gradient=ctx2.createRadialGradient(50,50,0,50,50,50); gradient.addColorStop(0,'#fff'); gradient.addColorStop(0.1, 'hsl(217, 61%, 33%)'); gradient.addColorStop(0.25, 'hsl(217, 64%, 6%)'); gradient.addColorStop(1, 'transparent'); ctx2.fillStyle = gradient; ctx2.beginPath(); ctx2.arc(50, 50, 50, 0, Math.PI * 2);//画一个圆(x,y,半径,起始弧度,结束弧度) ctx2.fill(); 复制代码 渲染到画布上 ctx.drawImage(canvas2, 200,200, 50, 50);//在canvas绘制canvas2(img,x,y,w,h) 复制代码此时你会得到一颗星星 |
CopyRight 2018-2019 实验室设备网 版权所有 |