html 画布中心,html canvas

html canvas

canvas :可以理解为一个div,作用是一块画板

如果想要使用canvas,需要创建一个“画家”。生成画家的方法:

var huaban = document.querySelector('.canvas');//画板

var bicaso = huaban.getContext('2d');//画家 canvas上下文对象

//绘画操作

//表示在距离画板左上10px 10px的位置画了一个长宽分别为50px的矩形,默认填充颜色黑色 绘制矩形

bicaso.fillRect(10,10,50,50);

//表示绘制轮廓线

bicaso.strokeRect(10,10,50,50);

//绘制画笔颜色

bicaso.fillStyle='颜色';

//擦除矩形方法

bicaso.clearRect(x,y,要擦除的矩形宽度,要擦除的矩形高度);

Transparency(透明度)

globalAlpha = transparencyValue: 这个属性影响到 canvas 里所有图形的透明度,有效的值范围是 0.0 (完全透明)到 1.0(完全不透明),默认是 1.0。

globalAlpha 属性在需要绘制大量拥有相同透明度的图形时候相当高效。不过,我认为使用rgba()设置透明度更加好一些。

canvas基础demo

Document

您的浏览器不支持canvas,请更新或更换浏览器。

您的浏览器不支持canvas

您的浏览器不支持canvas

// 2.在js脚本中获取到canvas元素

var canvas = document.getElementById('myCanvas');

// 判断getContext()方法是否存在,来检测浏览器是否支持canvas==========================

if(canvas.getContext) {

alert("您的浏览器支持canvas");

}else {

alert("您的浏览器不支持canvas");

}

// ===============================================================================

// 3.通过canvas的getContext()方法获取画布上下文,即创建context对象。以获取允许进行绘画的2D环境。 或者3D环境("3D")

var context = canvas.getContext("2d");//getContext("2d")该方法用于返回一个内建的h5对象,该对象提供了用于绘图的方法和属性,使用该对象可以在canvas画布中绘制图形。 相当于画笔。

// 4.绘制图形的操作 =============================================================================================================

//绘制一个矩形,填充色为蓝色,矩形坐标为(10,10) 长50宽80。-------------------------------

context.fillStyle="blue";

context.fillRect(10,10,50,80);//strokeRect(x,y,width,height) clearRect(x, y, widh, height):清除指定的矩形区域,然后这块区域会变的完全透明。

// 循环生成若干个40px的小矩形,边框颜色随机-------------------------------------------------

function draw0(){

var canvas = document.getElementById('canvas2');

if (!canvas.getContext) return;

var ctx = canvas.getContext("2d");

for (var i = 0; i < 6; i++){//6行6列

for (var j = 0; j < 6; j++){

ctx.fillStyle = "rgb(${randomInt(0, 255)},${randomInt(0, 255)},${randomInt(0, 255)})";

// ctx.fillStyle = "rgb(randomInt(0, 255),randomInt(0, 255),randomInt(0, 255))";

ctx.strokeRect(j * 50, i * 50, 40, 40);

// ctx.fillRect(j * 50, i * 50, 40, 40);

}

}

}

draw0();

/**

返回随机的 [from, to] 之间的整数(包括from,也包括to) 颜色随机生成失败????????????????

*/

function randomInt(from, to){

return parseInt(Math.random() * (to - from + 1) + from);

}

//绘制一条直线-------------------------------------------------

context.moveTo(0,0);

context.lineTo(200,30);

context.stroke();

// 绘制复杂图形--------使用绘制路径方法--------Math.sin()----Math.cos()------Math.PI------beginPath()---lineTo()----closePath()-----------

var n = 0;

var dx = 150;

var dy = 150;

var s = 100;

context.beginPath();//开始一条路径 或重置当前路径

context.fillStyle = 'orange';//填充属性设置

context.strokeStyle = 'yellow';//边框样式

context.lineWidth = '1';//边框宽度

var x = Math.sin(0);//使用sin cos三角函数计算顶点坐标x,y

var y = Math.cos(0);

var dig = Math.PI / 15 * 11;//Math.PI返回的是圆周率 π

for(var i = 0;i<30;i++) {//表示30个点的连线

var x = Math.sin(i * dig);

var y = Math.cos(i * dig);

context.lineTo(dx+x*s,dy+y*s);

}

context.closePath();//关闭路径

context.fill();//填充 默认填充黑色

context.stroke();//边框 默认黑色

// 绘制圆形----------------beginPath()----arc()-----closePath()-------------------------------

// arc(x,y,r,sAngle,eAngle,counterclockwise);---x,y表示圆心坐标---r表示圆版半径---sAngle起始角【0】---eAngle结束角【2*Math.PI】---counterclockwise规定逆时针还是顺时针绘图(false顺时针,true逆时针)

context.fillStyle = "blue";//设置画笔填充颜色样式

context.strokeStyle = 'red';//设置边框颜色样式

context.strokeWidth = '2';

context.beginPath();//开始创建路径

context.arc(50,50,50,0,2*Math.PI,true);//圆心坐标(50,50) 半径50 逆时针旋转 从0°~360°

context.closePath();

context.fill();

context.stroke();

// 绘制14条弧形-------------------------0°表示水平线 +90°表示负y轴方向-----------------------------------------------------------

for(var i=0;i<15;i++) {

context.strokeStyle='red';

context.beginPath();

context.arc(10,300,i*10,0,Math.PI*3/2,true);//弧心坐标(0,300) 半径10*i 逆时针旋转0°~((1/2)π)° 逆时针旋转0°~90°

context.closePath();//从当前点到开始点的闭合路径操作

context.stroke();

}

// 绘制圆弧-------------通过使用控制点----arcTo(x1,y1,x2,y2,r);--控制点1坐标 控制点2坐标 圆弧半径----------------------------------------

context.beginPath();

context.moveTo(150,150)//起点坐标

context.arcTo(200,150,200,250,60);//arcTo表示绘制的图形由两条切换所决定。l1为起始点和控制点1的直线,l2为控制点1和控制点2的直线

context.lineTo(250,250);//到达的下一点的坐标

context.stroke();//绘图

context.fill();//填充

// 绘制路径------------------------路径都是闭合的----------------------------------

function draw1() {

context.fillStyle="orange";

context.beginPath();//新建一条路径

context.moveTo(10,10);//将画笔移动到指定坐标

context.lineTo(200,50);

context.lineTo(10,50);

context.closePath();//闭合

context.stroke();//绘制路径

context.fill();//填充闭合区域

}

draw1();

// 透明度 Transparency(0.0,1.0) globalAlpha = transparencyValue; 如果不是大量需要设置透明度,用rgba就够了

// lineWidth 线条宽度

// lineCap = type 线条末端样式 butt--末端以方形结束 round--末端以圆形结束 square--末端以方形结束,但两端都增加了一个长度为线宽一半的矩形区域

// lineJoin=type 线条接合处样式 round--弧形 bevel--接合处以横线为底 miter(默认)--接合处延申相连部分的外边缘,形成灵性

function draw3(){

var canvas = document.getElementById('tutorial');

if (!canvas.getContext) return;

var ctx = canvas.getContext("2d");

var lineJoin = ['round', 'bevel', 'miter'];

ctx.lineWidth = 20;

for (var i = 0; i < lineJoin.length; i++){

ctx.lineJoin = lineJoin[i];

ctx.beginPath();

ctx.moveTo(50, 50 + i * 50);

ctx.lineTo(100, 100 + i * 50);

ctx.lineTo(150, 50 + i * 50);

ctx.lineTo(200, 100 + i * 50);

ctx.lineTo(250, 50 + i * 50);

ctx.stroke();

}

}

draw3();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值