关于fill?

关于fill?

<!DOCTYPE html>

<html lang="en">


<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

<style>

canvas {

background-color: cadetblue;

}

</style>

</head>


<body>

<canvas id="canvas" width="500" height="500"></canvas>

<script>

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

ctx.fillStyle = "red";

ctx.arc(250, 250, 100, 0, 2 * Math.PI, true);

//ctx.fill();



ctx.clip();

ctx.fillStyle = "pink";

ctx.fillRect(150, 150, 100, 100);

ctx.fill();


// ctx.beginPath();

// ctx.fillStyle = "blue";

// ctx.fillRect(250, 150, 100, 100);

// ctx.fill();


// ctx.beginPath();

// ctx.fillStyle = "orange";

// ctx.fillRect(150, 250, 100, 100);

// ctx.fill();


// ctx.beginPath();

// ctx.fillStyle = "red";

// ctx.fillRect(250, 250, 100, 100);

// ctx.fill();



</script>

</body>


</html>

这样的效果为什么是这样啊 ?

这里的fill我有点晕了

设置fil() 整个区域都会覆盖 不设置fill() 就只会覆盖fillRect()




正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2020-07-28 17:59:07

同学你好,问题解答如下:

fill是填充,所以写ctx.fill()时,会将整个圆,都填充成粉色:

http://img1.sycdn.imooc.com//climg/5f1ff6c80907f4a006360437.jpg

由于fillRect本身就是绘制矩形并填充的意思,所以此处只使用ctx. fillRect就行,如下:

http://img1.sycdn.imooc.com//climg/5f1ff64709be89aa05540388.jpg

此时效果如下:

http://img1.sycdn.imooc.com//climg/5f1ff64c092a0f5305110508.jpg

由于使用了裁切“ctx.clip()”,所以填充的矩形只显示,位于粉色圆内的部分,如下:

http://img1.sycdn.imooc.com//climg/5f1ff65a09eabdab05170498.jpg

同学可以试着理解一下。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师