javascript - 在具有相同 SVG 坐标的 Canvas 图像上定位 Div
问题描述
我有一个用例,其中我有一个可拖动到 SVG 元素上的 div。它是一个便利贴,放置在 SVG 中的各个元素附近,然后我使用canvas.drawImage()
.
问题是它的定位不正确当我开始从左到右拖动它时,它与 SVG 中的元素的距离开始发生变化。我附上几个截图来澄清情况
定位在 SVG 上的元素:image1.1
绘制后出现在画布上的元素:image1.2
绘制后出现在画布上的第二个元素: image2.2
正如您在图像 1.1 和 2.1 中看到的,我将元素定位在两个不同的条上,但它们在完全相同的坐标上。
但是在图像 1.2 和 2.2 中,两个元素都应该在条形图上的相同位置,但两者都不同。当我向右走时,红色盒子向左漂移。我希望两个盒子相对于盒子处于相同的位置。
这是我用来从整个 svg 中获取像素坐标的代码
var pt = $("#bar-chart-modal").find(".si-dataviz-bar")[0].createSVGPoint(); // Created once for document
pt.x = e.clientX;
pt.y = e.clientY;
// The cursor point, translated into svg coordinates
var cursorpt = pt.matrixTransform($("#bar-chart-modal").find(".si-dataviz-bar")[0].getScreenCTM().inverse());
console.log("(" + cursorpt.x + ", " + cursorpt.y + ")");
每当我拖动给我 X 和 Y 的元素时,这段代码就会运行。然后我在 drawImage() 中使用这些坐标,如下所示
ctx.drawImage(footerImg, self.pagex, self.pagey);
谢谢
解决方案
推荐阅读
- selenium-webdriver - 我们可以创建多个 webdriver 实例在一个网页中同时工作吗
- python - 如何使用python在盒子里移动机器人?
- python - Matcher 正在返回一些重复项
- neo4j - 如何从“多匹配”密码中获取所有节点
- azure - 使用 Azure PowerShell 中的两个帐户在 kubernetes 上工作
- c# - 不要等待异步方法,但 VS 会发出警告
- heroku - 为什么 Heroku 构建缓存随着每个版本的发布而变得越来越大?
- elf - 按部分过滤 GNU nm 的输出
- php - 如何使用 arg 中未知数量的参数创建用于插入/更新/删除的 PDO 类方法
- sql - 根据条件从相同列中选择单个值