与尺度无关的元素

2023-12-13

我正在开发一个(2D)计算几何库,我希望能够吐出图片来帮助调试。我想要的图元是点、线段和文本。但我事先不知道我有兴趣查看什么比例(也许只有一小部分多边形无法正常工作),所以我也需要能够缩放和平移图像。

我挂了SVGPan当我在 Chrome 中查看生成的图像时,可以平移和缩放它们,但是(可以理解)所有基元都随着缩放而缩放,因为 SVGPan 仅通过使用缩放变换来工作。因此,放大无助于弄清楚非常小的特征区域中发生了什么。

我找到了矢量效应属性,它通过让我指定以像素为单位的宽度来很好地修复线段。但这并不能帮助我管理文本。理想情况下,无论变换比例有多大,它都是 12 pt。

而且我对于画点也还是一头雾水。我以为我可以使用圆圈,但半径也会缩放,所以如果放大得太远,它看起来就像一堆圆圈而不是点。如果我使用矢量效果属性,圆的笔划宽度将不再缩放,但圆的半径仍然会缩放。所以我最终得到的是带有细轮廓的大圆圈,而不是半径为一两个像素的小圆圈。

有没有办法只缩放元素的位置?我真的总是希望线、点和文本无论比例如何都显示相同的大小,并且只缩放它们的位置。我的 SVG 文件都是机器生成的,严格来说是为了帮助我编码,所以如果有人有任何想法,我不介意奇怪的黑客攻击。或者如果有另一种技术代替 SVG,对于这个用例来说更有意义。


我在这些问题中更深入地回答了这个问题:

  • 如何使用 Javascript 在 SVG 中绘制不可缩放的圆
  • 缩放父元素时保留后代元素的大小

简而言之,您想要 (a) 使用transform="translate(…,…)定位缩放元素,并且 (b) 每次在某个包装器上调整变换时(如 SVGPan 所做的那样)将您不希望缩放的每个元素传递给此函数:

// Copyright 2012 © Gavin Kistner, [email protected]
// License: http://phrogz.net/JS/_ReuseLicense.txt

// Counteracts all transforms applied above an element.
// Apply a translation to the element to have it remain at a local position
function unscale(el){
  var svg = el.ownerSVGElement;
  var xf = el.scaleIndependentXForm;
  if (!xf){
    // Keep a single transform matrix in the stack for fighting transformations
    xf = el.scaleIndependentXForm = svg.createSVGTransform();
    // Be sure to apply this transform after existing transforms (translate)
    el.transform.baseVal.appendItem(xf);
  }
  var m = svg.getTransformToElement(el.parentNode);
  m.e = m.f = 0; // Ignore (preserve) any translations done up to this point
  xf.setMatrix(m);
}

上面第一个问题的答案还描述了一个旨在直接与 SVGPan 一起使用的帮助器方法,因此您所要做的就是包含我的库(两个函数),添加一个noscale对每个标记进行类,然后编写如下内容:

unscaleEach('#viewport .noscale');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与尺度无关的元素 的相关文章

  • 为什么将 x 和 y 设置为 0 时 svg 文本会消失?

    我刚刚开始阅读有关svg我提出了以下问题 我正在创建一个简单的svg with a text里面如下图所示 从我的阅读中我了解到x and y of the text标签声明文本在标签内的位置svg space 为什么当我同时设置x and
  • 为什么这个 JS 创建的 SVG 在 Chrome 中不起作用?

    考虑这个简单的 SVG SMIL 动画
  • CSS使背景图像使用字体字符

    我想使用字体字符 例如来自 font awesome 作为输入元素的背景图像
  • 让用户渲染自己的 SVG 文件的安全隐患

    我计划让网站用户上传他们自己的 SVG 文档并使用inkscape or svg2pdf 用户要么未经身份验证 要么经历一个简单的注册过程 所以我预计会有一些黑客尝试 我可以采取哪些过滤措施来最大程度地减少安全威胁 Inkscape 似乎并
  • 双弧形

    我目前正在尝试生成 波浪形幽灵底部 形状 该形状包含两条双曲线 虽然底部的部分这个图片 http images clipartpanda com ghost clip art castle ghost clipart1 jpg我认为以更好的
  • SVG 转 JPG / PNG

    有没有工作模块可以convert a SVG image into像素格式如JPEG or PNG 看看蜡染工具包 具体来说是光栅化器 http xmlgraphics apache org batik tools rasterizer h
  • 增加 D3 图中边缘的可点击区域

    我有一个由 d3 制作的图 dagre d3 位于其顶部用于绘制有向图 这给出了我对渲染图表的期望 要编辑构建图表的数据 每个元素都是可单击的 这对于使用标签渲染边缘的情况来说很好 但它们并不总是有标签 导致未标记的边缘很难单击进行编辑 分
  • 如何在“object”标签内选择 SVG?

    HTML 页面的内容如下所示 方法如下script js looks var tooltip d3 select body append div style position absolute sty
  • D3更新circle-pack数据新节点与现有节点重叠

    我正在关注一般更新模式 http bl ocks org mbostock 3808234但在分层方面存在问题 使用圆形包装布局 我pack新数据 update enter and exit圆形元素 然而 当新元素enter 它们重叠upd
  • 将 SVG 路径转换为绝对命令

    给定一个 SVG Path 元素 如何将所有路径命令转换为绝对坐标 例如 转换此路径
  • SVG线宽问题

    我开始了我的svg学习 我想用svg线做一些技巧吧 但有件事我不明白 我为每个技能创建 2 行 一行是空的 另一行是知识百分比 问题是 前两行的高度是我给出的笔画宽度的一半 其他线都有很好的高度 这是一个 jsbin http jsbin
  • 如何按比例缩放 SVG

    我已从 Illustrator 导出 SVG 并希望设置 SVG 的高度并按比例设置宽度比例 这是 SVG 示例
  • 使 D3 响应式:viewBox 与 resize()?

    我必须构建在平板电脑 桌面显示器以及某些情况下非常大的 4k 高分辨率影院尺寸显示器上都能正常运行的 d3 可视化效果 因此 我试图找出使用 SVG 的 viewBox 属性和 preserveaspectratio 与调用调整大小函数以在
  • 在 SVG 中设置悬停语句样式

    我正在计划一个基于这个 SVG 插图的网络 菜单 我的想法的原则 一个样式为活动的圆圈 一个样式为悬停的圆圈以及一个也需要设置样式的伴随笔画 https i stack imgur com H397o png 当我阅读 SVG 文件的规范时
  • 快速响应的交互式图表/图形:SVG、Canvas 还是其他?

    我正在尝试选择正确的技术来更新一个项目 该项目基本上在可缩放 可平移的图表中渲染数千个点 当前使用 Protovis 的实现性能不佳 在这里查看 http www planethunters org classify http www pl
  • 使用 jQuery 更改 SVG 元素的“xlink:href”属性

    我正在尝试使用单击事件更改 xlink href 属性 到目前为止它部分有效 这就是我正在做的 HTML a href class ui btn ui corner all ui shadow editIcon style text ali
  • 滚动在 chrome 中的 svg 异物内不起作用

    我在 svg 异物中有 div 带有溢出 auto 滚动仅适用于鼠标滚轮 无法拖动栏 它适用于 Firefox 但不适用于 chrome safari 如果 svg g 元素上没有转换 它就可以工作 参见小提琴 http jsfiddle
  • 具有宽度/高度的 SVG 在 IE9/10/11 上无法缩放

    IE 9 10 11 存在一个已知问题 如果您有一个 SVG 文件
  • D3.以编程方式缩放后使用鼠标滚轮时缩放会跳转

    当我通过单击鼠标缩放到特定位置然后尝试平移或使用鼠标滚轮时 缩放行为会跳跃 看来我的缩放级别正在恢复 就像单击鼠标之前一样 这是我的事件处理程序 function click d var x y k if d centered d var
  • 动画持续时间不准确

    我在 SVG 中创建了加载微调器 但动画持续时间不准确 例如 30 秒动画持续时间 实际 26 秒 动画持续时间 45 秒 实际持续时间 38 秒 60 秒动画持续时间 实际 51 秒 我很绝望 不知道哪里可能出错 你能帮助我吗 1 旋转器

随机推荐

  • org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException

    如何处理 java lang IllegalStateException org apache tomcat util http fileupload FileUploadBase FileSizeLimitExceededExceptio
  • 致命错误:对非对象调用成员函数 close()。 MySQLi问题

    当我上传到实时服务器时 出现以下错误 它在本地主机上运行正常 我认为这很奇怪 致命错误 在非对象上调用成员函数 close 它所指的行 stmt gt close 与数据库的连接 connection new mysqli MYSQL HO
  • Android 搜索对话框的样式/主题

    tl dr 搜索对话框拾取应用程序主题中的白色文本样式 使搜索文本不可见 我正在为一个看似微不足道的问题而苦苦挣扎 我的应用程序使用深色背景 并且我使用 EEEEEE 将文本颜色调整为比标准灰色更亮 我已经实现了一个搜索对话框 Honeyc
  • Redis 主动-主动复制

    我在用redis version 2 8 3 我想建立一个redis簇 但这个簇中应该有multiple master 这意味着我需要多个对所有其他节点具有写入访问权限和应用能力的节点 我可以构建一个包含一个主服务器和多个从服务器的集群 我
  • 仅使用传递的参数子集创建一个namedtuple对象

    我使用以下方法从 MySQL 数据库中提取行作为字典 使用 SSDictCursor 并进行一些处理 from collections import namedtuple class Foo namedtuple Foo id name a
  • 是否可以在 iframe 上停止/暂停视频?

    这是视频 我想停止或暂停 可以吗 只想坚持在 iframe 上 http jsfiddle net karimkhan 2Lgxk5h3 7 js jquery 中有相同的函数吗
  • Qt的IP地址小部件,类似于MFC的IP地址控制

    我正在Qt中寻找一个类似于MFC的IP地址控制的小部件 有谁知道这样的小部件 或者我如何创建一个小部件 我不知道什么是 MFC IP Widget 但看起来它是一个输入 IP 地址的 Widget 您需要使用带有 inputMask 000
  • WPF 组合框显示成员路径

    好吧 我查看了其他问题 似乎没有得到答案 所以希望这里有人能得到答案 非常简单的问题为什么 DisplayMemberPath 属性不绑定到该项目
  • jsonp comet 挂起请求导致浏览器上丑陋的“正在加载”状态

    我正在使用 jsonp 进行跨域 comet 请求 正在加载 状态确实很烦人 有什么方法可以用javascript抑制这种情况吗 对于那些不熟悉 jsonp 的人来说 它基本上会注入一个脚本标记 但在我的情况下 我将请求挂在我的服务器上 直
  • 嵌套函数定义和范围(UnboundLocalError)[重复]

    这个问题在这里已经有答案了 为什么下面的代码无效 def foo1 x 5 def bar if x 5 x 6 print x bar 虽然此代码有效 def foo2 x 5 def bar if x 5 print ok print
  • 使用 jQuery 获取 html 元素的宽度(以百分比 % 表示)

    If I alertcss 选择器设置为的元素width 100 我明白了px 有什么方法可以让它进来吗 根据 css 设置 我需要它来修复一些具有流畅布局的脚本 css my element width 100 javascript al
  • 对指针列表进行排序时出现问题

    我正在尝试对指针列表进行排序 在我的例子中 每个指针都是 Job 类型 我的目的是按序列号对作业进行排序 void Container jobSort list
  • ionic 2 如何使用索引动态加载

    对于 ionic 1 我已经这样做了ng if index 3 0 但我需要在网格视图中动态加载数据 其中一行有两个列 我怎样才能做到这一点 我尝试了下面的代码 in my schudle ts ResourceData name ksjs
  • 比较两个二维数组并获取交集和差异

    我想比较两个数组之间整行的数据并生成 相交行的数组和 一个数组 其中第一个数组中的行在第二个数组中找不到 并且 一个数组 其中在第一个数组中找不到第二个数组中的行 我有两个多维数组 array1 sight id gt 13 locatio
  • JavaScript createElementNS 和 SVG

    我想使用 Javascript 创建内联 SVG 图形 然而 似乎createElementNS函数应用一些标准化并将所有标签转换为小写 这对于 HTML 来说很好 但对于 XML SVG 来说就不行了 我使用的NS是http www w3
  • 如何在 PHP 中传递系统命令时转义字符

    我有一个运行 PHP HTML 页面的 Linux Web 服务器 for loop instruction I m constructing the instruction here instruction lspci grep i vg
  • 如何使用 python 3.2 安装 MySQLdb

    我正在尝试使用 python 连接到 mySQL 据我了解 你需要有 MySQLdb 它是一些 python 连接器模块 我的第一个问题是没有正确版本的 mySQLdb 可以找到here 然后我应该打开一个命令行窗口并导航到我刚刚下载的文件
  • Python 子集和

    我正在尝试编写一个函数 该函数不仅可以确定集合的子集之和是否添加到所需的目标数字 而且还可以打印作为解决方案的子集 这是我用于查找子集是否存在的代码 def subsetsum array num if num 0 or num lt 1
  • 如何在 React js Web 应用程序中添加 PAYTM 网关集成?

    我从这里开始工作https github com paytm paytm pg node sdk sample blob master javascript DemoApp js我在 Express 中使用了它 它正在工作 但现在我想从反应
  • 与尺度无关的元素

    我正在开发一个 2D 计算几何库 我希望能够吐出图片来帮助调试 我想要的图元是点 线段和文本 但我事先不知道我有兴趣查看什么比例 也许只有一小部分多边形无法正常工作 所以我也需要能够缩放和平移图像 我挂了SVGPan当我在 Chrome 中