关键词搜索

源码搜索 ×
×

canvas笔记-lineJoin和miterLimit的使用

发布2020-05-31浏览1377次

详情内容

lineJoin是线条与线条连接时的效果

lineJoin有如下参数

miter(default)

bevel

round

下面对各个参数进行展示!

默认情况下:

源码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <canvas id="canvas" style="border:1px solid #aaa;display:block;margin:50px auto;">
  9. 当前浏览器不支持Canvas,请更换浏览器后再试
  10. </canvas>
  11. <script>
  12. window.onload = function() {
  13. let canvas = document.getElementById("canvas");
  14. canvas.width = 800;
  15. canvas.height = 800;
  16. let context = canvas.getContext("https://cdn.jxasp.com:9143/image/2d");
  17. context.lineWidth = 10;
  18. drawStar(context, 150, 300, 400, 400, 0);
  19. }
  20. function drawStar(cxt, r, R, x, y, rot){
  21. cxt.beginPath();
  22. for(let i = 0; i < 5; i++){
  23. cxt.lineTo(Math.cos((18 + i * 72 - rot) / 180 * Math.PI) * R + x,
  24. -Math.sin((18 + i * 72- rot) / 180 * Math.PI) * R + y);
  25. cxt.lineTo(Math.cos((54 + i * 72 - rot) / 180 * Math.PI) * r + x,
  26. -Math.sin((54 + i * 72 - rot) / 180 * Math.PI) * r + y);
  27. }
  28. cxt.closePath();
  29. cxt.stroke();
  30. }
  31. </script>
  32. </body>
  33. </html>

当lineJoin为bevel时

源码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <canvas id="canvas" style="border:1px solid #aaa;display:block;margin:50px auto;">
  9. 当前浏览器不支持Canvas,请更换浏览器后再试
  10. </canvas>
  11. <script>
  12. window.onload = function() {
  13. let canvas = document.getElementById("canvas");
  14. canvas.width = 800;
  15. canvas.height = 800;
  16. let context = canvas.getContext("https://cdn.jxasp.com:9143/image/2d");
  17. context.lineWidth = 10;
  18. context.lineJoin = "bevel";
  19. drawStar(context, 150, 300, 400, 400, 0);
  20. }
  21. function drawStar(cxt, r, R, x, y, rot){
  22. cxt.beginPath();
  23. for(let i = 0; i < 5; i++){
  24. cxt.lineTo(Math.cos((18 + i * 72 - rot) / 180 * Math.PI) * R + x,
  25. -Math.sin((18 + i * 72- rot) / 180 * Math.PI) * R + y);
  26. cxt.lineTo(Math.cos((54 + i * 72 - rot) / 180 * Math.PI) * r + x,
  27. -Math.sin((54 + i * 72 - rot) / 180 * Math.PI) * r + y);
  28. }
  29. cxt.closePath();
  30. cxt.stroke();
  31. }
  32. </script>
  33. </body>
  34. </html>

当个lineJoin为round时

源码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <canvas id="canvas" style="border:1px solid #aaa;display:block;margin:50px auto;">
  9. 当前浏览器不支持Canvas,请更换浏览器后再试
  10. </canvas>
  11. <script>
  12. window.onload = function() {
  13. let canvas = document.getElementById("canvas");
  14. canvas.width = 800;
  15. canvas.height = 800;
  16. let context = canvas.getContext("https://cdn.jxasp.com:9143/image/2d");
  17. context.lineWidth = 10;
  18. context.lineJoin = "round";
  19. drawStar(context, 150, 300, 400, 400, 0);
  20. }
  21. function drawStar(cxt, r, R, x, y, rot){
  22. cxt.beginPath();
  23. for(let i = 0; i < 5; i++){
  24. cxt.lineTo(Math.cos((18 + i * 72 - rot) / 180 * Math.PI) * R + x,
  25. -Math.sin((18 + i * 72- rot) / 180 * Math.PI) * R + y);
  26. cxt.lineTo(Math.cos((54 + i * 72 - rot) / 180 * Math.PI) * r + x,
  27. -Math.sin((54 + i * 72 - rot) / 180 * Math.PI) * r + y);
  28. }
  29. cxt.closePath();
  30. cxt.stroke();
  31. }
  32. </script>
  33. </body>
  34. </html>

这里当个lineJoin为miter时,一代miterlimit超过10,就会默认改变为bevel。重新设置如下:

context.miterLimit = 20

miterLimit默认值为10

miterLimit的值如下:

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载