Порядок трансформации при рендеринге маркера SVG - PullRequest
1 голос
/ 28 марта 2012

Я хочу знать, в каком порядке следует применять преобразования для рендеринга маркера, который имеет

  1. Имеет элемент преобразования - transform = "scale"
  2. Атрибут MarkerUnits - setв значение «strokeWidth»
  3. и атрибут «refX»

SVG выглядит следующим образом

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="3.51615in"
    height="0.244444in" viewBox="0 0 253.163 17.6" xml:space="preserve" color-interpolation-filters="sRGB" class="st3">

<style type="text/css">
<![CDATA[
    .st1 {marker-end:url(#mrkr4-6);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.239976}
    .st2 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.068959096269629}
    .st3 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<defs id="Markers">
    <g id="lend4">
        <path d="M 2 1 L -0 0 L 2 -1 L 2 1 " style="stroke:none"/>
    </g>
    <marker id="mrkr4-6" class="st2" refX="-29.002700270027" orient="auto"
            markerUnits="strokeWidth">
        <use xlink:href="#lend4"/> <!--transform="scale(-14.501350135013)"--> 
    </marker>
</defs>
<g id="shape1-1" transform="translate(7.78146,-0.16)">
    <path d="M0 8.96 L230.64 8.96" class="st1"/>
  </g>

IЯ сначала масштабирую матрицу по ширине обводки "shape1-1" (0.239976), затем переводю эту матрицу с помощью refX (-29.002700270027), затем я перевожу матрицу туда, куда должен идти маркер (последняя точка (230.64)8.96), это маркер конца).И в конце концов я учитываю атрибут transform в элементе use.Это не похоже на правильный порядок.Это не рендеринг должным образом.

Кстати, связанный вопрос.когда в моем элементе маркера я установил для MarkerUnits значение «strokeWidth», для какого обводки следует использовать ширину обводки, заданную для элемента пути (0,239976), или для элемента маркера (0,068959096269629)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...