TP Notes
全部
CSS
SVG
資源收集
HTML
其它
關於我
Translate
2020年12月10日 星期四
有趣的 SVG filter
SVG 有個強大的 filter , 可以做到很多有趣的特效,先從最基本的開始 # filter ``` x,y,width,height 濾鏡位置和大小,如果沒有設定,預設為使用該濾鏡的物件往外擴 10% filterUnits userSpaceOnUse 範圍為整個 SVG objectBoundingBox 範圍只在物件區域 (預設) primitiveUnits userSpaceOnUse (預設) objectBoundingBox ``` # feImage , feTile 和 feBlend feImage 很單純的就是用一張圖當作過濾器,於是不管本來的圖長什麼樣子,都會變成那張圖,加上 feTile 後,有點像材質貼圖, 會佔滿本來圖形的 box 範圍 而 feBlend 是混合兩張圖, 可以指定 in 和 in2 以及 mode ``` in , in2 輸入的圖 SourceGraphic 用來過濾的原始圖 SourceAlpha 原始圖的 alpha BackgroundImage BackgroundAlpha FillPaint StrokePaint [filter-primitive-reference] mode multiply 兩張圖用 and 運算 color-dodge 一種混色運算 沒有值 直接疊圖 所有 filter 都可以用的參數 result 濾鏡後的結果 x,y 濾鏡影響座標 width,height 濾鏡影響範圍 ``` ``` $mmcode(r1) ```
圖1:
原始的 path
圖2:
使用 feImage
圖3:
feImage+feTile
圖4:
feBlend mode="multiply"
圖5:
feBlend mode="color-dodge"
# feOffset 很單純的濾鏡,就是位移 ``` dx,dy 座標位移 in 來源 ``` 利用 in="SourceAlpha" 可以取得陰影部位 ``` $mmcode(r2) ```
利用 feBlend 結合兩張圖產生單一濾鏡的陰影效果
filter 的每個效果後面可以加上 result="名稱" , 然後 in="名稱" 以及 in2="名稱" 來使用 ``` $mmcode(r3) ```
# feMerge , feMergeNode feBlend 只能疊兩張圖,另一個疊圖用的是 feMerge 使用方式:由 feMergeNode 前後來調整順序 ```
``` 範例 : ``` $mmcode(r4) ```
# feGaussianBlur 就是高斯模糊 ``` in 來源 stdDeviation 模糊程度 ``` 範例 : ``` $mmcode(r5) ```
/>
# feFlood 功能很單純的填滿一個距形的顏色,在這個範例中,特別說明一下濾鏡預設的範圍 黑框為本來物件的範圍,左上角為 (50,50) 而綠色濾鏡的大小從 (0,0) 開始畫,大小佔滿整張圖,結果影響範圍是本來的 rect 上下左右都加大 10% ,如紅框一樣,第二個藍色濾鏡從 (80,60) 開始畫 ``` $mmcode(r6) ```
沒有留言:
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言