Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dictionary 位置缩放时将SVG元素保持为固定大小_Dictionary_Svg_Graphics_Transformation - Fatal编程技术网

Dictionary 位置缩放时将SVG元素保持为固定大小

Dictionary 位置缩放时将SVG元素保持为固定大小,dictionary,svg,graphics,transformation,Dictionary,Svg,Graphics,Transformation,当背景和位置坐标发生变化时,如何将文本或对象保持为固定大小?例如: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" width="100%

当背景和位置坐标发生变化时,如何将文本或对象保持为固定大小?例如:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:ev="http://www.w3.org/2001/xml-events" 
    width="100%" height="100%"
    viewBox="0 0 50000 50000"
    >
    <circle  cx="25000"  cy="25000" r="100px" fill="red" />
</svg>

在这段代码中,圆不是100像素,它将根据viewbox的大小进行缩放,因此它将很小


例如,这个问题表现在地图上。在地图上放大和缩小时,您希望表示城市位置的点和标签保持相同大小,而不是在用户缩放时变大或变小。

将视口比例的倒数应用于半径,例如

var circle=document.getElementById('c');
var root=document.getElementById('root');
var矩阵=circle.getCTM();
圆r.baseVal.value/=矩阵a

属性
vector effect=“non-scaling stroke”
禁用行上的缩放。画一条两端为圆形且起点和终点位于同一位置的直线将生成一个圆

但这仅适用于
笔划linecap
可以生成的形状。也许它的开销更少,如果不是,至少它很容易。 我正在Ubuntu
14.04
上使用Chromium版本为
45.0.2454.101
的库

<line x1="250" x2="250" y1="250" y2="250" stroke-width="5" 
stroke="rgb(0,0,0)" stroke-linecap="round" vector-effect="non-scaling-stroke"/>

计算出放大了多少,并对希望看到未缩放的元素应用逆变换。