Чи можна вставити один документ SVG-документа Inkscape або інший?


16

Я хотів би взяти один невеликий SVG-файл (створений за допомогою Inkscape) та вбудувати чи зв’язати його в інший (більший). Коли браузер відображається, я сподіваюся, що менший відобразиться всередині якогось заповнювача великого.

Це можливо?

Відповіді:


8

Віддайте перевагу <use>тому, <image>як пізніше відображається з фіксованою роздільною здатністю і не масштабується, як це роблять звичайні векторні об'єкти в поточному документі. http://www.w3.org/TR/SVG11/struct.html#ImageElement

Але елемент <use>не може посилатися на всі файли SVG, його xlink:hrefатрибут є посиланням на елемент / фрагмент у документі SVG ( http://www.w3.org/TR/SVG11/struct.html#UseElement ). Елемент "використання" може посилатися на будь-який локальний або не локальний ресурс.

приклад:

MyLibrary.svg:
<svg (...)>
        <rect x="0" y="0" width="200" inkscape:label="upper-left-blue"
              style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none"
              id="upper-left-blue" height="200"/>

UseParts.svg:
        <use x="0" y="0" width="400" xmlns:xlink="http://www.w3.org/1999/xlink"
             xlink:href="MyLibrary.svg#upper-left-blue" xlink:type="simple"
             xlink:actuate="onLoad" height="400" id="use8793" xlink:show="embed"/>

Підтримка цієї функції може відрізнятися для різних редакторів / глядачів SVG, наскільки я знаю, вона повинна працювати (принаймні) в Inkscape, Firefox та Batik.


Я думаю, що варто відзначити, що Inkscape додав підтримку цієї функції у версії 0.91. Я додав ppa Inkscape, щоб отримати цю версію на Mint 17 (14.04 Ubuntu).
Лейф Карлсен

@LeifCarlsen Як саме? Здається, я не знаходжу, як це зробити в 0.91
rac2030

1
Я генерую файли з цією функцією поза Inkscape та переглядаю / рендерую за допомогою Inkscape.
Лейф Карлсен

Гммм ... нормально, я раніше це пробував і не зміг, але, можливо, мені потрібно постаратися більше
rac2030

Ha nevermind ... зазвичай його користувач робить помилку ... для довідки я просто забув додати визначення xlink ... Я додав простір імен у верхній тег svg і раптом він почав працювати ;-)
rac2030

3

Використовуйте imageелемент та посилайтеся на свій файл SVG. Для задоволення збережіть таке recursion.svg:

<svg width="100%" height="100%" viewBox="-100 -100 200 200" version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
  <circle cx="-50" cy="-50" r="30" style="fill:red" />
  <image x="10" y="20" width="80" height="80" xlink:href="recursion.svg" />
</svg>

Джерело: /programming/5451135/embed-svg-in-svg/5451238#5451238


Якось це призводить до повідомлення "Зв'язане зображення не знайдено" з Inkscape 0.48.4 принаймні в Windows.
mlt

можливо, префікс xlink: href з "./"? працює для мене.
Бертех
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.