h5--新增标签详细的学习--canvas

本文介绍如何使用HTML5的Canvas元素进行基本图形绘制,包括设置画布、绘制矩形、圆形等,并介绍了坐标系、填充样式及贝塞尔曲线的绘制方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.canvas简单绘制一个框,注意给canvas加专属id,用来定义样式css。

<canvas id="myCanvas" style="border:1px solid;" width="200" height="100"></canvas>

2.简单图形的绘制:

其实canvas不能画图,它只是画布,画布框,相当于table,form,ol,li一样,只是一个外框。

绘制工作通过javascript脚本实现。添加图形,绘画

a.添加一个画布,制定id值。

b.在脚本中写东西

var c=document.getElementById("myCanvas");        <!-- 获取指定id的画布-->
var context = c.getContext("2d");        <!-- getcontext获取上下,文创建一个context对象来获取允许进行绘制的2d环境  返回一个内建的对象,使用这个对象可以进行绘图 -->
<!--然后调用context方法进行绘制-->

代码:


<canvas id="myCanvas" style="border:1px solid;" width="200" height="100"></canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");		<!-- 获取指定id的画布-->
var context = c.getContext("2d");		<!-- getcontext获取上下,文创建一个context对象来获取允许进行绘制的2d环境  返回一个内建的对象,使用这个对象可以进行绘图 -->
<!--然后调用context方法进行绘制-->
context.fillStyle="#ff00ff";
context.fillRect(50,25,100,50);<!--然后调用context方法进行绘制矩形前为坐标(50,25) 长宽 100 50 -->
</script>
</body>

结果:

 

3.认识canvas坐标:

坐标相对与画布左上角,x向右,y向下。

 

4.何时不用canvas:

渲染一个标签效果有更好方法时,可以使用背景图像时,不要使用canvas。

 

5.如果浏览器不支持canvas:考虑这个问题,在canvas中包含一些提示性信息文本,如果canvas可用就不会显示这段文本,如果canvas不可用这段文本才显示。

 

6.检测浏览器支持

7.画直线

8.绘制矩形strokeRec绘制边线轮廓。fillRec绘制填充。fillstyle与strokestyle的区别也是与填充颜色,轮廓线颜色的区别

可以使用strokeStyle描绘颜色十六进制或rgb函数都可以,rgb百分比,rgba(,,,)  strokeRct描绘区域轮廓

9.绘制圆形

 

context.beginPath()开始绘制

arc:绘制弧线   1,2 坐标点  3 半径  4 开始角度 5 结束角度 Math.PI*2,6 true是顺时针方向绘制。

context.closePath()

context.fill()填充色进行填充。

同心圆:

 

10.绘制三角形:

11.清空画布:context.clearRect(0,0,300,200)

12.quadraticCurveTo(75,50--控制点,300,200--终点)绘制2次方贝塞尔曲线。

13.besizeCurveTo(25,50--第一个控制点,75,50--第一个控制点,300,200--终点)绘制3次方贝塞尔曲线。

14.保存与恢复canvas状态:context.save()暂时保存到堆。context.restore():将保存的取出恢复状态

15.移动坐标空间:单位:像素

使用translate移动原点偏移位置:context.translate(80,80);

例子:绘制渐变小伞

<body>
<canvas id="myCanvas" style="border:1px solid;" width="700" height="300">
<script language="javascript">
function drawTop(ctx,fillStyle){
	ctx.fillStyle = fillStyle;
	ctx.beginPath();
	ctx.arc(0,0,30,0,Math.PI,true);
	ctx.closePath();
	ctx.fill();	
	}
function drawGrip(ctx){
	ctx.save();
	ctx.fillStyle = "blue";
	ctx.fillRect(-1.5, 0, 1.5, 40);
	ctx.beginPath();
	ctx.strokeStyle = "blue";
	ctx.arc(-5, 40, 4, Math.PI, Math.PI*2,true);
	ctx.stroke()
	ctx.closePath();
	ctx.restore();
	}
function draw(){
	var ctx = document.getElementById("myCanvas").getContext("2d");
	ctx.translate(80,80);
	for(var i=1; i<10; i++){
		ctx.save();
		ctx.translate(60*i, 0);
		drawTop(ctx, "rgb("+(30*i)+","+(255-30*i)+",255)");
		drawGrip(ctx);
		ctx.restore();
		}
	
	}
window.onload = function(){
	draw();
	}
</script>
</body>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值