canvas lineJoin 属性

2018-11-8 12:20| 作者: admin| 查看: 62| 评论: 0|来自: 蚂蚁部落

线与线之间可能有交汇的时候。

交汇之处,有可能圆润,也有可能尖锐。

通过lineJoin属性可以设置或者返回两线交汇处的类型。

此属性的名称也从侧面体现了它的功能,line具有线的意思,join具有交汇的意思。

语法结构:

[JavaScript] 纯文本查看 复制代码
context.lineJoin="bevel|round|miter";

参数解析:

(1).miter:默认值,说明交汇处为尖角。

(2).round:说明交汇处为圆角。

(3).bevel:说明交汇处为斜角。

浏览器兼容:

(1).IE9+浏览器支持此属性。

(2).edge浏览器支持此属性。

(3).谷歌浏览器支持此属性。

(4).火狐浏览器支持此属性。

(5).Opera浏览器支持此属性。

(6).Safari浏览器支持此属性。

代码实例:

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<meta name="author" content="http://www.softwhy.com/" />  
<title>蚂蚁部落</title>
<script>
window.onload=function(){
  let canvas=document.getElementById("ant");
  let ctx=canvas.getContext("2d");
  ctx.beginPath();
  ctx.lineWidth=10;
  ctx.lineJoin="round";
  ctx.moveTo(20,20);
  ctx.lineTo(100,50);
  ctx.lineTo(20,100);
  ctx.stroke();
}
</script>
</head>
<body>
<canvas id="ant"></canvas>
</body>
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/08/122208txk9r9u4i8p43ubb.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

round具有圆角或者圆弧的意思。

将lineJoin设置为round,可以使直线交汇处呈现圆弧状。

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<meta name="author" content="http://www.softwhy.com/" />  
<title>蚂蚁部落</title>
<script>
window.onload=function(){
  let canvas=document.getElementById("ant");
  let ctx=canvas.getContext("2d");
  ctx.beginPath();
  ctx.lineWidth=10;
  ctx.lineJoin="bevel";
  ctx.moveTo(20,20);
  ctx.lineTo(100,50);
  ctx.lineTo(20,100);
  ctx.stroke();
}
</script>
</head>
<body>
<canvas id="ant"></canvas>
</body>
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/08/122245tlqkxfevf4olx7xa.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

将lineJoin属性值设置为bevel,两条线的交汇处所形成的尖角被切去了一块。

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<meta name="author" content="http://www.softwhy.com/" />  
<title>蚂蚁部落</title>
<script>
window.onload=function(){
  let canvas=document.getElementById("ant");
  let ctx=canvas.getContext("2d");
  ctx.beginPath();
  ctx.lineWidth=10;
  ctx.lineJoin="miter";
  ctx.moveTo(20,20);
  ctx.lineTo(100,50);
  ctx.lineTo(20,100);
  ctx.stroke();
}
</script>
</head>
<body>
<canvas id="ant"></canvas>
</body>
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/08/122319dz1ob7c73qbopopz.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

将lineJoin属性值设置为miter,可以使直线交汇处呈现尖角效果。

miter是lineJoin的默认值,它受到miterLimit属性的影响,看如下代码实例:

看一段代码实例:

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<meta name="author" content="http://www.softwhy.com/" />  
<title>蚂蚁部落</title>
<script>
window.onload=function(){
  let canvas=document.getElementById("ant");
  let ctx=canvas.getContext("2d");
  ctx.beginPath();
  ctx.lineWidth=10;
  ctx.miterLimit=2;
  ctx.lineJoin="miter";
  ctx.moveTo(20,20);
  ctx.lineTo(100,50);
  ctx.lineTo(20,100);
  ctx.stroke();
}
</script>
</head>
<body>
<canvas id="ant" width="500" height="400"></canvas>
</body>
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/08/122356kkgkcfjzvh8ilz99.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到箭头处受到了影响,与将属性值设置为"bevel"效果完全一致。

不同的是利用miterLimit设置更加灵活,可以自行调整被切掉的尺寸。

首先看一个图示:

a:3:{s:3:\"pic\";s:43:\"portal/201811/08/122425ik1gmgr4beb9m8kb.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

miterLimit属性用来定义内侧角与外侧角之间的水平距离。

如果miterLimit属性规定的尺寸,小于绘制尖角的默认尺寸,将超出的尺寸切掉。

特别说明:miterLimit属性仅对lineJoin属性值为miter时有效。

具体参阅canvas miterLimit 属性一章节。

[HTML] 纯文本查看 复制代码运行代码
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<script>
window.onload=function(){
  let canvas = document.getElementById("canvas");
  let ctx = canvas.getContext("2d");
  ctx.lineWidth=10;
  ctx.lineJoin="round";
  ctx.strokeRect(10,10,100,100);
}
</script>
</head>
<body>
<canvas id="canvas" width="400" height="300"></canvas>
</body>
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/08/122506v5pggmwv52tpzbtr.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述代码绘制了一个圆角矩形效果。


鲜花

握手

雷人

路过

鸡蛋
上一篇:canvas fillStyle

最新评论

返回顶部