SVG - фильтры
SVG использует элемент <filter> для определения фильтров. Элемент <filter> использует атрибут id для его уникальной идентификации. Фильтры определяются внутри элементов <def>, а затем на них ссылаются графические элементы по их идентификаторам.
SVG предоставляет богатый набор фильтров. Ниже приводится список наиболее часто используемых фильтров.
- feBlend
- feColorMatrix
- feComponentTransfer
- feComposite
- feConvolveMatrix
- feDiffuseLighting
- feDisplacementMap
- feFlood
- feGaussianBlur
- feImage
- feMerge
- feMorphology
- feOffset - фильтр падающих теней
- feSpecularLighting
- feTile
- feTurbulence
- feDistantLight
- fePointLight
- feSpotLight
Декларация
Ниже приводится объявление синтаксиса <filter>элемент. Мы показали только основные атрибуты.
<filter
filterUnits="units to define filter effect region"
primitiveUnits="units to define primitive filter subregion"
x="x-axis co-ordinate"
y="y-axis co-ordinate"
width="length"
height="length"
filterRes="numbers for filter region"
xlink:href="reference to another filter" >
</filter>
Атрибуты
Sr.No. | Имя и описание |
---|---|
1 | filterUnits- единицы для определения области действия фильтра. Он определяет систему координат для различных значений длины в фильтре и для атрибутов, определяющих подобласть фильтра. Если filterUnits = "userSpaceOnUse", значения представляют значения в текущей пользовательской системе координат на месте в то время, когда используется элемент 'filter'. Если filterUnits = "objectBoundingBox", значения представляют собой значения в долях или процентах от ограничивающей рамки на ссылающемся элементе, находящемся на месте в то время, когда используется элемент 'filter'. По умолчанию - userSpaceOnUse. |
2 | primitiveUnits- единицы для определения области действия фильтра. Он определяет систему координат для различных значений длины в фильтре и для атрибутов, определяющих подобласть фильтра. Если filterUnits = "userSpaceOnUse", значения представляют значения в текущей пользовательской системе координат на месте в то время, когда используется элемент 'filter'. Если filterUnits = "objectBoundingBox", значения представляют собой значения в долях или процентах от ограничивающей рамки на ссылающемся элементе, находящемся на месте в то время, когда используется элемент 'filter'. По умолчанию - userSpaceOnUse. |
3 | x- координата по оси X ограничивающего прямоугольника фильтра. Неисправность - 0. |
4 | y- координата по оси ординат ограничивающего прямоугольника фильтра. По умолчанию 0. |
5 | width- ширина рамки фильтра. По умолчанию 0. |
6 | height- высота ограничивающей рамки фильтра. По умолчанию 0. |
7 | filterRes - числа, представляющие области фильтра. |
8 | xlink:href - используется для обозначения другого фильтра. |
пример
testSVG.htm<html>
<title>SVG Filter</title>
<body>
<h1>Sample SVG Filter</h1>
<svg width="800" height="800">
<defs>
<filter id="filter1" x="0" y="0">
<feGaussianBlur in="SourceGraphic" stdDeviation="8" />
</filter>
<filter id="filter2" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceAlpha" dx="20" dy="20" />
<feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" />
<feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
</filter>
</defs>
<g>
<text x="30" y="50" >Using Filters (Blur Effect): </text>
<rect x="100" y="100" width="90" height="90" stroke="green" stroke-width="3"
fill="green" filter="url(#filter1)" />
</g>
</svg>
</body>
</html>
Два элемента <filter>, определенные как filter1 и filter2.
Эффект фильтра feGaussianBlur определяет эффект размытия с помощью степени размытия с помощью stdDeviation.
in = "SourceGraphic" определяет, что эффект применим ко всему элементу.
Эффект фильтра feOffset используется для создания эффекта тени. in = "SourceAlpha" определяет, что эффект применим к альфа-части графики RGBA.
Элементы <rect> связывают фильтры с помощью атрибута filter.
Вывод
Откройте textSVG.htm в браузере Chrome. Вы можете использовать Chrome / Firefox / Opera для просмотра изображения SVG напрямую, без каких-либо плагинов. Internet Explorer 9 и выше также поддерживает рендеринг изображений SVG.
Фильтр с эффектом тени
<html>
<title>SVG Filter</title>
<body>
<h1>Sample SVG Filter</h1>
<svg width="800" height="800">
<defs>
<filter id="filter1" x="0" y="0">
<feGaussianBlur in="SourceGraphic" stdDeviation="8" />
</filter>
<filter id="filter2" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceAlpha" dx="20" dy="20" />
<feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" />
<feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
</filter>
</defs>
<g>
<text x="30" y="50" >Using Filters (Shadow Effect): </text>
<rect x="100" y="100" width="90" height="90" stroke="green" stroke-width="3"
fill="green" filter="url(#filter2)" />
</g>
</svg>
</body>
</html>
Вывод
Откройте textSVG.htm в браузере Chrome. Вы можете использовать Chrome / Firefox / Opera для просмотра изображения SVG напрямую, без каких-либо плагинов. Internet Explorer 9 и выше также поддерживает рендеринг изображений SVG.