为了研究pixi库,就顺带从头到位学习下canvas吧
判断支持力度
var webgl = (function() { try { var canvas = document.createElement(‘canvas‘); return !!window.WebGLRenderingContext && (canvas.getContext(‘webgl‘) || canvas.getContext(‘experimental-webgl‘)); } catch (e) { return false; } })();
getContext方法指定参数2d,表示该canvas对象用于生成2D图案(即平面图案)。如果参数是3d,就表示用于生成3D图像(即立体图案),这部分实际上单独叫做WebGL API
绘制路径
- beginPath方法表示开始绘制路径
- moveTo(x, y)方法设置线段的起点
- lineTo(x, y)方法设置线段的终点
- stroke方法用来给透明的线段着色
////////// //绘制路径 // ////////// context.beginPath() context.moveTo(20, 20) context.lineTo(30, 30) context.moveTo(100, 150) context.lineTo(150, 200) context.lineWidth = 2 context.strokeStyle = "red" context.stroke()
绘制矩形
l fillRect(x, y, width, height)方法用来绘制矩形,它的四个参数分别为矩形左上角顶点的x坐标、y坐标,以及矩形的宽和高。fillStyle属性用来设置矩形的填充色
l strokeRect方法与fillRect类似,用来绘制空心矩形
l clearRect方法用来清除某个矩形区域的内容
////////// //绘制路径 // ////////// context.beginPath() context.moveTo(20, 20) context.lineTo(30, 30) context.moveTo(100, 150) context.lineTo(150, 200) context.lineWidth = 2 context.strokeStyle = "red" context.stroke()
绘制文本
fillText(string, x, y) 用来绘制文本,它的三个参数分别为文本内容、起点的x坐标、y坐标。使用之前,需用font设置字体、大小、样式(写法类似与CSS的font属性)。与此类似的还有strokeText方法,用来添加空心字
fillText方法不支持文本断行,即所有文本出现在一行内。所以,如果要生成多行文本,只有调用多次fillText方法。
////////// //绘制路径 // ////////// context.beginPath() context.moveTo(20, 20) context.lineTo(30, 30) context.moveTo(100, 150) context.lineTo(150, 200) context.lineWidth = 2 context.strokeStyle = "red" context.stroke()
绘制圆形和扇形
arc方法用来绘制扇形
ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);
arc方法
l x和y参数是圆心坐标
l radius是半径
l startAngle和endAngle则是扇形的起始角度和终止角度(以弧度表示)
l anticlockwise表示做图时应该逆时针画(true)还是顺时针画(false)
////////// //绘制路径 // ////////// context.beginPath() context.moveTo(20, 20) context.lineTo(30, 30) context.moveTo(100, 150) context.lineTo(150, 200) context.lineWidth = 2 context.strokeStyle = "red" context.stroke()
设置渐变色
createLinearGradient方法用来设置渐变色。
createLinearGradient方法的参数是(x1, y1, x2, y2),其中x1和y1是起点坐标,x2和y2是终点坐标。通过不同的坐标值,可以生成从上至下、从左到右的渐变等等。
///////// //渐变色 // ///////// var myGradient = context.createLinearGradient(0, 0, 0, 60); myGradient.addColorStop(0, "#BABABA"); myGradient.addColorStop(1, "#636363"); context.fillStyle = myGradient; context.fillRect(10,250,200,100);
设置阴影
///////// //渐变色 // ///////// var myGradient = context.createLinearGradient(0, 0, 0, 60); myGradient.addColorStop(0, "#BABABA"); myGradient.addColorStop(1, "#636363"); context.fillStyle = myGradient; context.fillRect(10,250,200,100);
<!doctype html><script type="text/javascript">
var mycanvas = document.getElementById("myCanvasTag");
var context = mycanvas.getContext(‘2d‘);
//////////
//绘制路径 //
//////////
context.beginPath()
context.moveTo(20, 20)
context.lineTo(30, 30)
context.moveTo(100, 150)
context.lineTo(150, 200)
context.lineWidth = 2
context.strokeStyle = "red"
context.stroke()
/////////
//绘制矩形 //
/////////
context.fillStyle = "red"
context.fillRect(250,250,50,50)
//空心圆
context.strokeRect(10,10,200,100);
//清除矩形
context.clearRect(250,250,20,20)
/////////
//绘制文本 //
/////////
// 设置字体
context.font = "Bold 20px Arial";
// 设置对齐方式
context.textAlign = "left";
// 设置填充颜色
context.fillStyle = "#008600";
// 设置字体内容,以及在画布上的位置
context.fillText("Hello!", 10, 50);
// 绘制空心字
context.strokeText("Hello!", 10, 100);
//////////////
//绘制圆形和扇形 //
//////////////
///绘制实心
context.beginPath();
context.arc(300, 150, 50, 0, Math.PI*2, true);
context.fillStyle = "#000000";
context.fill();
//绘制空心圆形
context.beginPath();
context.arc(60, 60, 50, 0, Math.PI*2, true);
context.lineWidth = 1.0;
context.strokeStyle = "#000";
context.stroke();
/////////
//渐变色 //
/////////
var myGradient = context.createLinearGradient(0, 0, 0, 60);
myGradient.addColorStop(0, "#BABABA");
myGradient.addColorStop(1, "#636363");
context.fillStyle = myGradient;
context.fillRect(10,250,200,100);
//阴影
context.shadowOffsetX = 10; // 设置水平位移
context.shadowOffsetY = 10; // 设置垂直位移
context.shadowBlur = 5; // 设置模糊度
context.shadowColor = "rgba(0,0,0,0.5)"; // 设置阴影颜色
context.fillStyle = "#CC0000";
context.fillRect(250, 350, 100, 30);
</script>