æ»¤éææ
å¨æäºæ
åµä¸ï¼ä¸äºåºæ¬ç SVG å¾å½¢å¹¶ä¸è½æä¾æç§æ³è¦è¾¾å°çææãæ¯å¦å¸¸è§çé´å½±ææï¼å°±ä¸è½åçå°ä¸æ¸åç±»å
ç´ ï¼<linearGradient>, <radialGradient>ï¼ä¸èµ·è¢«åå»ºãæ»¤éï¼Filterï¼å°±æ¯ SVG ä¸ç¨äºåå»ºå¤æææçä¸ç§æºå¶ã
ä¸é¢æ¯ä¸ä¸ªä¸º SVG å å®¹æ·»å æ¨¡ç³ææçåºæ¬ç¤ºä¾ãå°½ç®¡åºæ¬çæ¨¡ç³ææå¯ä»¥ä½¿ç¨æ¸åç±»å ç´ å建ï¼ä½æ¯ä½¿ç¨æ¨¡ç³æ»¤éå¯ä»¥åæ´å¤çäºæ ã
示ä¾
滤ééè¿ <filter> å
ç´ è¿è¡å®ä¹ï¼å¹¶ä¸ç½®äº <defs> åºåä¸ãå¨ filter æ ç¾ä¸æä¾ä¸ç³»åå¾å
ï¼primitivesï¼ï¼ä»¥åå¨åä¸ä¸ªåºæ¬åæ¢æä½ä¸å»ºç«çå¦ä¸ä¸ªæä½ï¼æ¯å¦æ·»å 模ç³ååæ·»å æäº®ææï¼ã妿è¦åºç¨æåå»ºçæ»¤éææï¼åªéè¦ä¸º SVG å¾å½¢å
ç´ è®¾ç½® filter 屿§å³å¯ã
<svg
width="250"
viewBox="0 0 200 85"
xmlns="http://www.w3.org/2000/svg"
version="1.1">
<defs>
<!-- Filter declaration -->
<filter
id="MyFilter"
filterUnits="userSpaceOnUse"
x="0"
y="0"
width="200"
height="120">
<!-- offsetBlur -->
<feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur" />
<feOffset in="blur" dx="4" dy="4" result="offsetBlur" />
<!-- litPaint -->
<feSpecularLighting
in="blur"
surfaceScale="5"
specularConstant=".75"
specularExponent="20"
lighting-color="#bbbbbb"
result="specOut">
<fePointLight x="-5000" y="-10000" z="20000" />
</feSpecularLighting>
<feComposite
in="specOut"
in2="SourceAlpha"
operator="in"
result="specOut" />
<feComposite
in="SourceGraphic"
in2="specOut"
operator="arithmetic"
k1="0"
k2="1"
k3="1"
k4="0"
result="litPaint" />
<!-- merge offsetBlur + litPaint -->
<feMerge>
<feMergeNode in="offsetBlur" />
<feMergeNode in="litPaint" />
</feMerge>
</filter>
</defs>
<!-- Graphic elements -->
<g filter="url(#MyFilter)">
<path
fill="none"
stroke="#D90000"
stroke-width="10"
d="M50,66 c-50,0 -50,-60 0,-60 h100 c50,0 50,60 0,60z" />
<path
fill="#D90000"
d="M60,56 c-30,0 -30,-40 0,-40 h80 c30,0 30,40 0,40z" />
<g fill="#FFFFFF" stroke="black" font-size="45" font-family="Verdana">
<text x="52" y="52">SVG</text>
</g>
</g>
</svg>
æ¥éª¤ 1
<feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur" />
设置 <feGaussianBlur> ä¸ç in 屿§ä¸º "SourceAlpha" å¼ï¼å³åå¾åç alpha ééï¼å¹¶è®¾ç½®äºæ¨¡ç³åº¦ä¸º 4 ä»¥åæ result ä¿åå¨äºä¸ä¸ªå为 "blur" ç临æ¶ç¼å²åºä¸ã
æ¥éª¤ 2
<feOffset in="blur" dx="4" dy="4" result="offsetBlur" />
<feOffset> 设置 in çå¼ä¸º "blur"ï¼å³æä»¬åé¢ä¿å result çé£ä¸ªä¸´æ¶ç¼å²åºãç¶å设置ç¸å¯¹åæ ï¼åå³åç§» 4ï¼åä¸åç§» 4ãæåæç»æ result ä¿åå°å为 "offsetBlur" çç¼å²åºä¸ãæ¥éª¤ 1ã2 å
¶å®æ¯å建å¾å½¢é´å½±ç两个å¾å
ã
æ¥éª¤ 3
<feSpecularLighting
in="offsetBlur"
surfaceScale="5"
specularConstant=".75"
specularExponent="20"
lighting-color="#bbbbbb"
result="specOut">
<fePointLight x="-5000" y="-10000" z="20000" />
</feSpecularLighting>
<feSpecularLighting> 设置è¾å
¥æº in 为 "offsetBlur"ï¼å°ä¼çæä¸ä¸ªå
ç
§ææï¼å¹¶å°ç»æ result ä¿åå¨ "specOut" ä¸ã
æ¥éª¤ 4
<feComposite in="specOut" in2="SourceAlpha" operator="in" result="specOut" />
第ä¸ä¸ª <feComposite> å
ç´ è®¾ç½®è¾å
¥æºä¸º "specOut"ï¼ç¬¬äºä¸ªè¾å
¥æºï¼in2ï¼ä¸º "SourceAlpha"ï¼å° "specOut" çç»æææé®çæï¼ä»¥è´äºæåçç»æä¸ä¼å¤§äº "SourceAlpha"ï¼æºå¾åï¼ï¼æåè¦çè¾åºç»æ result 为 "specOut"ã
æ¥éª¤ 5
<feComposite in="SourceGraphic" in2="specOut"
operator="arithmetic"
k1="0" k2="1" k3="1" k4="0"
result="litPaint"/>
第äºä¸ª <feComposite> 设置 in 为 "SourceGraphic" å "specOut"ï¼å³å¨ "SourceGraphic" ä¹ä¸æ·»å "specOut" çææï¼å¤å模å¼ä¸º "arithmetic"ï¼ç¶åä¿åç»æä¸º "litPaint"ã
æ¥éª¤ 6
<feMerge> <feMergeNode in="offsetBlur"/> <feMergeNode in="litPaint"/> </feMerge>
æåï¼<feMerge> å
ç´ åå¹¶äºé´å½±ææ "offsetBlur" åæºå¾åçå
ç
§ææ "litPaint"ã

æºå¾å

å¾å 1

å¾å 2

å¾å 3

å¾å 4

å¾å 5

å¾å 6