svg - 在 svg.js 中实现的 svg 视图框问题/错误
问题描述
我正在使用 html 和库 svg.js 将 svg 图形写入屏幕。当我应用视图框时,我得到了一个我不理解且无法解决的奇怪行为。工作代码和非工作代码的代码区别如下:
工作代码:
//Works great
svg = SVG(document.getElementsByTagName("div")[0]);
draw = svg //.viewbox(0, 0, 300, 300)
坏了:
//XY coordinates are off weird amounts
svag = SVG(document.getElementsByTagName("div")[0]);
draw = svg.viewbox(0, 0, 300, 300) //adding view box causes the problem
执行:
function drawRect(e) {
var rectX = e.clientX;
var rectY = e.clientY;
draw.rect(10,10).move(rectX, rectY).fill("#00FF00")
损坏/工作:
请原谅我在这里的笨拙……绿色方块已关闭,并且离点 (0,0) 越远越远。“关闭”是指绿色方块不会出现在点击发生的位置。由于某种因素。
我想知道如何调整视图框的代码:
解决方案
通过 SVG 通过 where (SVG.handlerMap[0] === <svg
dom node object) 判断点似乎可以解决问题
var p = SVG.handlerMap[0].createSVGPoint();
p.x = rectX;
p.y = rectY;
var pN = p.matrixTransform(SVG.handlerMap[0].getScreenCTM().inverse());
rectX = pN.x;
rectY = pN.y;
推荐阅读
- capl - CANoe / CAPL 设置信号的最佳实践 - 交互层或 SysVars
- python - AttributeError:“MLPClassifier”对象没有属性“best_loss_”
- c# - 在没有 PDB 的情况下调试程序集
- html - powershell 是否有任何先决条件才能控制 IE 导航?
- firebase - 如何使用颤振在firebase中添加额外的用户数据,如displayName?
- kubernetes - Kubectl 导出已弃用。任何替代品
- c# - 我如何计算三个或四个经纬度点之间的距离?(Haversine 公式)
- shell - 如何在 UNIX shell 脚本中传递最终文件名
- javascript - Angular:如何在角度单元测试中使用路由器
- react-native - 世博会调试:物理设备