canvas繪制愛(ài)心的幾種方法總結(jié)(推薦)
第一種方法
代碼實(shí)現(xiàn)的一種方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>使用桃心形方程繪制愛(ài)心</title> </head> <body> <canvas></canvas> <script> var canvas = document.querySelector('canvas'); var ctx = canvas.getContext('2d'); canvas.width = window.innerWidth; canvas.height = window.innerHeight; var Heart = function(x, y) { this.x = x; this.y = y; this.vertices = []; for(let i=0; i<30; i++) { var step = i / 30 * (Math.PI * 2);//設(shè)置心上面兩點(diǎn)之間的角度,具體分成多少份,好像需要去試。 var vector = { x : (15 * Math.pow(Math.sin(step), 3)), y : -(13 * Math.cos(step) - 5 * Math.cos(2 * step) - 2 * Math.cos(3 * step) - Math.cos(4 * step)) } this.vertices.push(vector); } } Heart.prototype.draw = function() { ctx.translate(-1000,this.y);//這一步跟ctx.shadowOffsetX必須一起使用,不明白為啥? ctx.beginPath(); for(let i=0; i<30; i++) { var vector = this.vertices[i]; ctx.lineTo(vector.x, vector.y); } ctx.shadowColor = "red"; ctx.shadowOffsetX = this.x+1000; ctx.fill(); } canvas.onmousedown = function(e) { var x = e.offsetX; var y = e.offsetY; var heart = new Heart(x, y); heart.draw(); } </script> </body> </html>
代碼里面有兩處地方不明白 ctx.translate(-1000,this.y); 跟 ctx.shadowOffsetX = this.x+1000; 能感覺(jué)出來(lái)什么意思,但是不知道為啥要加上,去掉就不行了。請(qǐng)路過(guò)的各位大佬們幫忙解答一下~~
以上這篇canvas繪制愛(ài)心的幾種方法總結(jié)(推薦)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用layer實(shí)現(xiàn)表單完美驗(yàn)證的方法
今天小編就為大家分享一篇利用layer實(shí)現(xiàn)表單完美驗(yàn)證的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09JavaScript數(shù)組、json對(duì)象、eval()函數(shù)用法實(shí)例分析
這篇文章主要介紹了JavaScript數(shù)組、json對(duì)象、eval()函數(shù)用法,結(jié)合實(shí)例形式分析了JS數(shù)組創(chuàng)建、賦值、連接、翻轉(zhuǎn),json對(duì)象定義、讀取,eval()函數(shù)的功能、使用等,需要的朋友可以參考下2019-02-02最全的JavaScript開(kāi)發(fā)工具列表 總有一款適合你
最全的JavaScript開(kāi)發(fā)工具列表分享給你,總有一款適合你!2017-06-06ES6新特性之?dāng)?shù)組、Math和擴(kuò)展操作符用法示例
這篇文章主要介紹了ES6新特性之?dāng)?shù)組、Math和擴(kuò)展操作符用法,結(jié)合實(shí)例形式分析了ES6中數(shù)組、Math和擴(kuò)展操作符的新特性、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-04-04JavaScript html5 canvas畫(huà)布中刪除一個(gè)塊區(qū)域的方法
這篇文章主要介紹了JavaScript html5 canvas畫(huà)布中刪除一個(gè)塊區(qū)域的方法,涉及JavaScript結(jié)合html5操作canvas畫(huà)布圖形繪制的技巧,需要的朋友可以參考下2016-01-01淺談JavaScript中定義變量時(shí)有無(wú)var聲明的區(qū)別
這篇文章主要介紹了JavaScript中定義變量時(shí)有無(wú)var聲明的區(qū)別分析以及示例分享,需要的朋友可以參考下2014-08-08利用JavaScript腳本實(shí)現(xiàn)滾屏效果的方法
這篇文章主要介紹了利用JavaScript腳本實(shí)現(xiàn)滾屏效果的方法,即一個(gè)公告欄顯示般的效果,需要的朋友可以參考下2015-07-07