Canvas入门(四)

Canvas入门(四)

阴影

设置好阴影有关的属性值,就能够自动为要绘制的形状或路径生成阴影

  • shadowOffsetX:阴影相对于形状或路径的 x 坐标偏移。默认为 0
  • shadowOffsetY:阴影相对于形状或路径的 y 坐标偏移。默认为 0
  • shadowBlur:阴影的模糊量。默认值为 0,表示不模糊
  • shadowColor:阴影的颜色。默认为黑色
const mycanvas = document.getElementById("mycanvas");

// 确保浏览器支持canvas
if (mycanvas.getContext) {
  const context = mycanvas.getContext("2d");

  context.shadowOffsetX = 5;
  context.shadowOffsetY = 10;
  context.shadowBlur = 5;
  context.shadowColor = "rgba(0, 0, 0, .2)";

  context.fillStyle = "red";
  context.fillRect(005050);

  context.moveTo(100100);
  context.lineTo(18020);

  context.lineWidth = 12;
  context.stroke();
}
Canvas入门(四)
image-20220522114457032

渐变

线性渐变

线性渐变可以调用上下文的createLinearGradient方法,接收四个参数:起点 x 坐标、起点 y 坐标、终点 x 坐标、终点 y 坐标,创建CanvasGradient对象。

有了渐变对象后,就需要添加渐变色标了,通过addColorStop可以添加色标,第一个参数范围为 0~1,第二个参数是 CSS 颜色字符串。

const mycanvas = document.getElementById("mycanvas");

// 确保浏览器支持canvas
if (mycanvas.getContext) {
  const context = mycanvas.getContext("2d");

  const gradient = context.createLinearGradient(1010180180);

  gradient.addColorStop(0"red");
  gradient.addColorStop(0.5"blue");
  gradient.addColorStop(1"purple");

  context.fillStyle = gradient;
  context.fillRect(00200200);
}
Canvas入门(四)
image-20220522114554072

为了让渐变覆盖整个矩形,渐变的坐标和矩形的坐标应该搭配合适,不然只会显示部分渐变。

还可以调用上下文的createRadialGradient方法来创建径向渐变。接收 6 个参数,前 3 个参数指定起点圆形中心的 x 坐标、y 坐标和半径,后 3 个参数指定终点圆形中心的 x 坐标和半径。

const mycanvas = document.getElementById("mycanvas");

// 确保浏览器支持canvas
if (mycanvas.getContext) {
  const context = mycanvas.getContext("2d");

  let gradient = context.createRadialGradient(1001002010010080);
  gradient.addColorStop(0"white");
  gradient.addColorStop(1"black");

  context.fillStyle = gradient;
  context.fillRect(00200200);
}

上面这个渐变,简单理解就是内层圆为半径为 20 像素的纯白圆,外层圆为 80 像素的白渐变黑圆,剩余部分就是黑色。

Canvas入门(四)
image-20220522114630535

图案

图案适用于填充和描画图形的重复图像。通过createPattern方法,该方法接收两个参数,第一个参数是img元素,第二个参数是是否重复,和background-repeat属性一样。

然后,像渐变一样,把pattern对象赋值给fillStyle属性即可。

这个图案实际上就有点背景图像的味道了,通过创建pattern对象,来控制图像的重复。然后,给绘图上下文的fillStyle赋值,设置填充样式,最后再通过fillRect来设置图案的位置和大小。

const mycanvas = document.getElementById("mycanvas");

// 确保浏览器支持canvas
if (mycanvas.getContext) {
  const context = mycanvas.getContext("2d");

  const image = document.images[0];

  const pattern = context.createPattern(image, "repeat");
  // const pattern = context.createPattern(image, 'repeat-y')
  // const pattern = context.createPattern(image, 'no-repeat')

  context.fillStyle = pattern;
  context.fillRect(00190190);
}
Canvas入门(四)
image-20220522115145807


原文始发于微信公众号(赤蓝紫):Canvas入门(四)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/45345.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!