为什么当线宽很宽时填充会有阴影区域

来源:3-9 填充与描边

WittChen

2020-05-23 09:00:53

http://img.mukewang.com/climg/5ec8754f09d7d58006500266.jpg

问题一,为什么会有阴影区

问题二、我画了一个长宽为 100*200的矩形,我设置线宽为10,那么这个图形的实际占的面积是100*200吗

写回答

2回答

好帮手慕码

2020-05-23

同学你好,解答如下:

(1)因为设置了透明度,所以填充到边线之间的过渡出现了阴影。可以将不透明度设置为1:

http://img.mukewang.com/climg/5ec893a8092e6da104530303.jpg

(2)实际的宽高应该是100*200,即没有加上线宽,测试:

http://img.mukewang.com/climg/5ec894b809bcb24002930053.jpg

边线的部分是重叠的,说明没有实际占据位置。

http://img.mukewang.com/climg/5ec894ce09db855402530225.jpg

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

0
hittChen
h 刚刚试验了下,明白老师的意思了实际没变,但是看到的变大了,这个线宽,是从描边向内向外变宽,因此能看到阴影区域
h020-05-23
共1条回复

WittChen

提问者

2020-05-23

http://img.mukewang.com/climg/5ec8998f09073e7a06760290.jpg试验效果,当做笔记

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>canvas</title>
</head>
<body>
<!-- 创建一个画布 -->
<canvas class="test-canvas" width="1000" height="1000">
    如果浏览器兼容会显示该字段
</canvas>
<script>
    // 拿到这个画布
 var my_canvas = document.getElementsByClassName("test-canvas")[0];
    // 拿到画布的上下文,因为要操作画布,那么必须得通过上下文去操作
 var ctx = my_canvas.getContext("2d");
    ctx.lineWidth = 50;
    ctx.strokeRect(100,100,100,100);
    ctx.strokeRect(200,100,100,100);
    ctx.lineWidth = 1;
    ctx.strokeRect(350,100,100,100);
    ctx.strokeRect(450,100,100,100);
</script>
</body>
</html>


0

0 学习 · 6815 问题

查看课程