Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > Как прицепить растровую картинку в svg файл?


Автор: aaa82 27.12.2012, 11:33
кто знает как прицепить растровую картинку в svg-file ?

что-то пытаюсь сделать сам, пока никак:

Код

<image href="file:///D:/.../picture.jpg" x="0" y="0"
width="10" height="10"
/>

Автор: diadiavova 27.12.2012, 12:14
http://tutorials.jenkov.com/svg/image-element.html

Автор: aaa82 27.12.2012, 13:01
вроде как решена проблема, что-то типа такого работает

Код

<image x="0" y="0" width="153.416" height="122.682" xlink:href="picture.jpg"/>

Автор: aaa82 6.3.2013, 11:04
как сделать закраску объекта растром в SVG-файле?

интересует как код этого выглядит в SVG-файле

Автор: diadiavova 6.3.2013, 12:17
ЕМНИП это делается с помощью bacground-image свойства css.

Автор: aaa82 6.3.2013, 13:03
это мне не поможет )

Автор: diadiavova 6.3.2013, 13:08
Почему ? smile

Автор: aaa82 6.3.2013, 13:11
я не знаю что это "bacground-image свойства css"

мне бы строчечку готового кода ))
и тогда бы я научился в файл записывать правильно эту штуку smile

Автор: diadiavova 6.3.2013, 13:24
https://www.google.com/search?q=css%20background-image&client=ms-opera-mobile&channel=new
Так же пригодится свойство background-repeat
http://htmlbook.ru/css/background-image
http://htmlbook.ru/css/background-repeat
Просто добавляешь в элемент атрибут style

Код

<rect style="background-image: url( image.jpg)" ...


Что-то в этом роде

Автор: diadiavova 6.3.2013, 22:54
Заглянул в документацию, все оказалось не так просто. smile Для создания текстур используются фильтры типа feTile или элемент pattern
Код

       <svg width="300" height="300">
            <defs>
                <pattern id="texture" x="100" y="100" width="47" height="52" patternUnits="userSpaceOnUse">
                    <image width="47" height="52" xlink:href="t_reply.gif"/>
                </pattern>
            </defs>
            
            <circle cx="150" cy="150" r="50" fill="url(#texture)"/>
        </svg>
Здесь использовал картинку с винграда
user posted image
вот что получилось
user posted image


http://www.intuit.ru/department/graphics/svg/5/5.html
http://www.intuit.ru/department/graphics/svg/class/free/8/5.html

Добавлено @ 22:56
В примере использовался встроенный svg, как это делается в html5, так что, если у тебя отдельный файл, то все пространства имен и все такое нужно включать, а если используешь внедренный свг, то пример годится для копипасты.

Автор: aaa82 19.3.2013, 15:03
спасибо, это помогло

Автор: aaa82 20.3.2013, 13:51
остался похоже последний вопрос: как распознать какой картинкой залито - растровой или векторной?

в зависимости от этого вроде как по-разному надо в свг-файл записывать

Автор: diadiavova 20.3.2013, 14:46
Не понял. Какой залил, такой и залито. Разве нет? 

Автор: aaa82 20.3.2013, 20:25
да мне будут приходить всякие фигурки со своими qBrush и мне надо их потом записывать в свг-файл

залито текстурой... а растром или вектором - непонятно как отличить

Автор: diadiavova 20.3.2013, 20:56
Я всё равно не понял откуда и в каком виде они будут приходить. Пример приведи, что тебе приходит, тогда можно будет что-то говорить.

Автор: aaa82 22.3.2013, 11:01
на карте будут всякие фигурки, типа круги, прямоугльники, полигоны
они могут быть залиты картинкой, как растровой так и векторной

и мне это всё надо уметь в свг-файл записывать, для этого надо распознать растр это или вектор

а в библиотеке Qt вижу только Qt::TexturePattern

Автор: diadiavova 23.3.2013, 01:26
Я все равно не понял откуда и в каком виде ты получаешь картинки и какая такая необходимость застваляет определять их тип. Если это файлы, то смотреть надо по формату, а если что-то другое, то объясни что.

Автор: aaa82 26.3.2013, 14:18
мне надо уметь считать pattern у объекта, и записать этот pattern в SVG файл

что-то типа таких паттернов должно образовываться в SVG файле:
первый - растровый, второй - векторный 

Код

<pattern id="texture" x="100" y="100" width="23" height="26" 
patternUnits="userSpaceOnUse">
<image width="23" height="26" xlink:href="D:/eclipse.workspace/Proverka_SVG-build-desktop/Picture1.png"/>
</pattern>


  <pattern id="MyPattern" x="0" y="0" width="22" height="22"
           patternUnits="userSpaceOnUse">
    <circle cx="11" cy="11" r="10" fill="red" stroke="black"/>
  </pattern>


Автор: aaa82 27.3.2013, 10:26
ладно, кажись я понял что векторной заливки не видать
а растровую можно сделать )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)