一般繪圖的方式有兩種,即填充和描邊,前面的文章已經講了描邊的方法stroke,本文就講一下Canvas中填充圖形的方法。
填充即fill(),很直白吧?而且和strokeStyle表示描邊樣式一樣,fillStyle即表示填滿樣式。
ctx.fillStyle = '顏色';預設的填滿樣式是不透明的黑色
問題:未閉合的路徑可以填滿嗎?
可以。 Canvas會從你目前路徑的終點直接連接到起點,然後填滿。如圖:
但你可以發現,最後一段沒有描邊。
記得我們前一篇文章用4條線畫了一個正方形,但canvas不會這麼差勁,連直接繪製矩形的函數都沒有。你可以使用fillRect()直接填充一個矩形:
ctx.fillRect(x,y,width,height);
這裡的x,y是指矩形的左上角起點的座標,記住。
說到fillRect,就不得不提strokeRect,你猜對了,他的意思就是直接描邊出一個矩形。
還有fillText與strokeText,至於作用嘛,你可能都猜到了,我這裡先不講,大家先預習吧。
Canvas填充漸層色
在Canvas中,漸層色同樣分為兩種,即線性漸變和徑向漸變,而且創建他們的方法也是獨立的。我們先看如何建立線性漸層。
建立線性漸變=createLinearGradient-看,依然很直接的單字。他的語法如下:
createLinearGradient(x1,y1,x2,y2)有4個參數呢!看起來好複雜,其實這個蠻簡單的,因為我們前面已經說了,平面世界裡的一個點是由x座標和y座標決定的。所以,x1,y1就是表示線性漸變的起點座標,x2,y2就表示終點座標。
這樣做的好處很明顯,如果我們想創建一個斜著的線性漸變,很方便。但我們先創建一個水平的線性漸層試試吧。
var linear = ctx.createLinearGradient(100,100,200,100);漸變好像創建了,那麼我們可以填充了嗎? ————這個漸層是空的,沒有顏色。
往漸層條裡加顏色的方法是addColorStop(位置,顏色).但要注意了,這個addColorStop不是加在畫筆上,而是加在前面的那個保存漸變的變數上,我這裡是linear.
var linear = 代碼如下:
var linear = ctx.createLinearG.
linear.addColorStop(0,'#fff');
linear.addColorStop(1,'#333');
我這裡用了3個addColorStop,也就是為漸層條加上了3個顏色。
注意
:addColorStop的位置參數,永遠是介於0-1之間的數字,可以是兩位小數,表示百分比。他沒辦法接收’3px’這樣的參數。
程式碼如下:
var linear = ctx.createLinearGradient(100,100,200,100);
linear.addorStop(0,'#fff'); 0.5,'#f0f');
linear.addColorStop(1,'#333');
ctx.fillStyle = linear; //把漸層賦給填滿樣式
ctx.fillRect(100,100,100,1000);
注意,fillRect與strokeRect畫出的都是獨立的路徑,如上面的程式碼,在fillRect後調用描邊,並不會把剛剛畫出的矩形描邊,strokeRect同理。
測試後,發現了一個很頭痛的問題,就是線性漸變的座標是相對於整個Canvas範圍而言的。像我這裡,我的線性漸變起點就是100,100,如果我畫了一個矩形在0,0的位置,用這個漸變來填充,就會發現沒有填充——因為我的漸變的範圍根本就超過了矩形的範圍。
這真是個坑爹的設定。
提問:漸層起點之前與漸變終點之後還會填滿顏色嗎?
會。起點之前的顏色就是起點色,終點之後的顏色一直是終點色。
如何終止終點色,你可以在結束色之後再填一個透明的結束色。如:
linear.addColorStop. #333');
linear.addColorStop(1,'rgba(51,51,51,0)');
依照前面的計劃,我再建一個傾斜的線性漸變試試。只需要改createLinearGradient的參數即可.
var linear = ctx.createLinearGradient(100,100,200,200);
效果如圖:
createRadialGradient(x1,y1,r1,x2,y2,r2)其中的x1,y1,x2,y2依舊表示起點和終點,不過這裡的起點和終點都是一個圓,而x,y則是圓心的座標。所以,r1與r2分別是起點圓的半徑和終點圓的半徑。如圖:
在我的印像中,看起來像徑向漸層就是一個圓,圓心就是起點,圓的半徑就是終點。但canvas裡面的徑向漸層竟然搞的不一樣了,起點一個圓,終點一個圓,和我的理解有差距。
我們從最簡單的做起。首先,要做一個很正規的徑向漸變,即漸變圓形的圓心就是漸變的起點。由於正規的徑向漸變,中心即圓心,所以我們應該盡量避免發生偏斜。那麼,我們把終點圓的圓心與起點圓的圓心重合吧?
radial.addColorStop(0,'#fff');
radial.addColorStop(0.5,'#ff0');
radial.addColorStop(0.9,'#555');
radial.addColorStop(1,'#f00');
這裡我設定的徑向漸變起點圓和終點圓的圓心座標相同,而起點圓半徑為10,終點圓半徑為55.最後畫出的徑向漸變範圍是一個寬高110的圓形,說明漸變範圍以終點圓的範圍為準。
(可以看到終點圓範圍之外還是有顏色,這個顏色就是終點色,但是,如果你企圖使用radial.addColorStop(1.5,'#0f0′);這樣來定義漸變範圍之外的顏色,你還是會收到一個錯誤).
那麼,起點圓的半徑有什麼用呢? ——原本正常的徑向漸變的中心(姑且稱之為「變心」…吧)只是一個點,不應該是一個圓的。其實我們沒錯,這個起點圓就相當於一個圓點而已,只是可能比較大。
讓我們把起點圓的半徑變得很大,接近終點圓的半徑:
其他的colorStop都不變,然後圖形變成了這個樣子。
也就是說,canvas中徑向漸層的起點色,是從起點圓的範圍之外繪製的,而起點圓的整個顏色都是起點色。
我們把起點圓的半徑設為0,那徑向漸變的“變心”,就真的是一個點了。
大部分時候我們都不需要很正規的徑向漸變,反而希望他的變心是偏移的,類似下圖:
var radial = ctx.createRadialGradient(75,75, 0,55,55,55);但此時的漸變範圍仍是終點圓的範圍哈。
很多人天生就有一種搞破壞的心理,比如這裡,終點圓的半徑總比起點圓大,但如果把他們反過來會怎麼樣呢?
經測試,這樣不會報錯,只是原來的從內到外的漸變反過來變成了從外到內的漸變了。這是個好用法。
還有個問題,如果我們把起點圓的圓心偏移了,並且起點圓的範圍超出了終點圓的範圍,
這時會發生什麼事?
啊! ?這是什麼情況? !
當起點圓和終點圓只有部分重疊的時候,就會出現這種情況。所以,如果你需要正常的徑向漸變,請確保其中一個圓完全包住了另一個圓。 另外,既然漸變可以賦給fillStyle,那麼也可以賦給strokeStyle。效果你懂的。

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5開發需要掌握的工具和框架包括Vue.js、React和Webpack。 1.Vue.js適用於構建用戶界面,支持組件化開發。 2.React通過虛擬DOM優化頁面渲染,適合複雜應用。 3.Webpack用於模塊打包,優化資源加載。

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee

H5通過語義化元素和ARIA屬性提升網頁的可訪問性和SEO效果。 1.使用、、等元素組織內容結構,提高SEO。 2.ARIA屬性如aria-label增強可訪問性,輔助技術用戶可順利使用網頁。

"h5"和"HTML5"在大多數情況下是相同的,但它們在某些特定場景下可能有不同的含義。 1."HTML5"是W3C定義的標準,包含新標籤和API。 2."h5"通常是HTML5的簡稱,但在移動開發中可能指基於HTML5的框架。理解這些區別有助於在項目中準確使用這些術語。

H5,即HTML5,是HTML的第五個版本,它為開發者提供了更強大的工具集,使得創建複雜的網頁應用變得更加簡單。 H5的核心功能包括:1)元素允許在網頁上繪製圖形和動畫;2)語義化標籤如、等,使網頁結構清晰,利於SEO優化;3)新API如GeolocationAPI,支持基於位置的服務;4)跨瀏覽器兼容性需要通過兼容性測試和Polyfill庫來確保。

如何創建 H5 鏈接?確定鏈接目標:獲取 H5 頁面或應用程序的 URL。創建 HTML 錨點:使用 <a> 標記創建錨點並指定鏈接目標URL。設置鏈接屬性(可選):根據需要設置 target、title 和 onclick 屬性。添加到網頁:將 HTML 錨點代碼添加到希望鏈接出現的網頁中。

解決 H5 兼容問題的方法包括:使用響應式設計,允許網頁根據屏幕尺寸調整佈局。採用跨瀏覽器測試工具,在發布前測試兼容性。使用 Polyfill,為舊瀏覽器提供對新 API 的支持。遵循 Web 標準,使用有效的代碼和最佳實踐。使用 CSS 預處理器,簡化 CSS 代碼並提高可讀性。優化圖像,減小網頁大小並加快加載速度。啟用 HTTPS,確保網站的安全性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。