javascript - 在 Canvas 上绘制 SVG

标签 javascript html canvas svg

我有一组坐标,对于每一对,我想在 Canvas 上放置一个 SVG。问题出在getCircle功能。 SVG 不起作用,但如果我画一个圆圈(参见注释代码)它就起作用。

function getCircle() {
  var circle = document.createElement("canvas"),
      ctx = circle.getContext("2d"),      
      r2 = radius + blur;

  circle.width = circle.height = r2 * 2;

/*
  ctx.shadowOffsetX = ctx.shadowOffsetY = r2 * 2;
  ctx.shadowBlur = blur;
  ctx.shadowColor = "purple";

  ctx.beginPath();
  ctx.arc(-r2, -r2, radius, 0, Math.PI * 2, true);
  ctx.closePath();
  ctx.fill(); 
*/
  
  var img = new Image();
  img.onload = function() {
    ctx.drawImage(img, 0, 0);
  };
  img.src = "https://upload.wikimedia.org/wikipedia/en/0/09/Circle_Logo.svg";
  
  return circle;
}

var radius = 5;
var blur = 1;
var canvas = document.getElementById('c');
var ctx = canvas.getContext('2d');
canvas.width = 400;
canvas.height = 200;
var circle = getCircle();
ctx.clearRect(0, 0, canvas.width, canvas.height);

var data = [[38,20,2]];

for (var i = 0, len = data.length, p; i < len; i++) {
  p = data[i];
  ctx.drawImage(circle, p[0] - radius, p[1] - radius);
}
#c { 
  width: 400px;
  height: 200px;
}
<canvas id="c"></canvas>

最佳答案

var canvas = document.getElementById('c');
var ctx = canvas.getContext('2d');
canvas.width = 400;
canvas.height = 200;
var data = [[0,20,2],[125,20,2],[250,20,2]];
drawImage();

function drawImage() {
  var img = new Image();
  img.onload = function() {
    for (var i = 0, len = data.length, p; i < len; i++) {
       p = data[i];
       ctx.drawImage(this, p[0] , p[1] , 150, 150);
     }
  };
  img.src = "https://upload.wikimedia.org/wikipedia/en/0/09/Circle_Logo.svg";
}
#c { 
  width: 400px;
  height: 200px;
}
<canvas id="c"></canvas>

img.onload() 中使用 drawImage() 在指定位置绘制图像,宽度和高度如下: 。

关于javascript - 在 Canvas 上绘制 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45415985/

相关文章:

javascript - 使用 javascript 键盘输入使 <canvas> 中的图像移动?

Android Canvas - setWillNotDraw(false) 不起作用

javascript - 无法将数据写入 Node JS 中的文件

javascript - React-redux @connect 不起作用,但 connect() 起作用

php - 使用复选框从 php mysql 数据库和文件系统中删除多行

javascript - 重复设置 translate3d(10px,0,0) 并不是重复向右移动 div。如何让它发挥作用?

javascript - Google Analytics jQuery 跟踪外部链接 - _gaq & ga 未定义

javascript - 如何使用react js显示不可变 map 对象的树结构

javascript - 将插入符号放在动态生成的跨度之外

java - 第二个油漆覆盖第一个油漆