站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        如何使用HTML5 Canvas繪制動(dòng)態(tài)線性漸變

        如果要使用HTML5 Canvas繪制線性漸變,需要用到createLinearGradient()方法。下面我們就來(lái)一起看看具體的內(nèi)容。

        如何使用HTML5 Canvas繪制動(dòng)態(tài)線性漸變

        createLinearGradient()

        createLinearGradient()的參數(shù)如下。

        createLinearGradient(漸變開(kāi)始位置的X坐標(biāo),漸變開(kāi)始位置的Y坐標(biāo),漸變結(jié)束位置的X坐標(biāo),漸變結(jié)束位置的Y坐標(biāo))

        我們來(lái)看具體示例

        代碼如下

        <!DOCTYPE html> <html> <head>   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   <title></title>   <meta charset="utf-8" />   <style>     body {       background: #C0C0C0;     }   </style>   <script>     function PageLoad() {       var CanvasWidth = 1200;             var CanvasHeight = 480;             var canvas = document.getElementsByTagName('canvas')[0],           ctx = null,           grad = null,           color = 255;             if (canvas.getContext('2d')) {         ctx = canvas.getContext('2d');         ctx.clearRect(0, 0, CanvasWidth, CanvasHeight);         grad = ctx.createLinearGradient(0, 0, CanvasWidth, CanvasHeight);         grad.addColorStop(0, '#000000');         grad.addColorStop(1, '#2869fd');         ctx.fillStyle = grad;         ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);         canvas.addEventListener('mousemove', function (evt) {           var width = window.innerWidth,           height = window.innerHeight,           x = event.clientX,           y = event.clientY,           grad = ctx.createLinearGradient(x, y, CanvasWidth, CanvasHeight);           grad.addColorStop(0, '#000000');           grad.addColorStop(1, '#2869fd');           ctx.fillStyle = grad;           ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);         }, false);       }     }   </script> </head> <body onload="PageLoad();">   <canvas width="1200" height="480"></canvas> </body> </html>

        說(shuō)明:

        body標(biāo)簽的onload事件在顯示頁(yè)面時(shí)執(zhí)行PageLoad()函數(shù)。
        顯示頁(yè)面時(shí),將處理除事件偵聽(tīng)器之外的以下代碼。
        在畫(huà)布上繪圖使用getElementsByTagName()方法從ID獲取畫(huà)布對(duì)象。調(diào)用canvas對(duì)象上的getContext()方法以獲取畫(huà)布的上下文。通過(guò)調(diào)用clearRect()方法初始化畫(huà)布。
        創(chuàng)建漸變是由createLinearGradient()方法創(chuàng)建的。如果創(chuàng)建成功,則將返回漸變對(duì)象作為返回值。漸變的開(kāi)始顏色和結(jié)束顏色由漸變對(duì)象的addColorStop()方法設(shè)置。
        在畫(huà)布上繪制漸變可以通過(guò)將漸變對(duì)象指定給上下文的fillStyle并執(zhí)行fillRect()方法來(lái)在畫(huà)布上繪制漸變。

           function PageLoad() {       var CanvasWidth = 1200;       var CanvasHeight = 480;       var canvas = document.getElementsByTagName('canvas')[0],           ctx = null,           grad = null,           color = 255;       if (canvas.getContext('2d')) {         ctx = canvas.getContext('2d');         ctx.clearRect(0, 0, CanvasWidth, CanvasHeight);         grad = ctx.createLinearGradient(0, 0, CanvasWidth, CanvasHeight);         grad.addColorStop(0, '#000000');         grad.addColorStop(1, '#2869fd');         ctx.fillStyle = grad;         ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);       }     }

        如果在畫(huà)布中移動(dòng)鼠標(biāo)指針,則會(huì)執(zhí)行以下事件偵聽(tīng)器的代碼。
        從鼠標(biāo)指針坐標(biāo)到畫(huà)布右下角創(chuàng)建一個(gè)線性漸變,并在畫(huà)布上繪制它。

        canvas.addEventListener('mousemove', function (evt) {           var width = window.innerWidth,           height = window.innerHeight,           x = event.clientX,           y = event.clientY,           grad = ctx.createLinearGradient(x, y, CanvasWidth, CanvasHeight);           grad.addColorStop(0, '#000000');           grad.addColorStop(1, '#2869fd');           ctx.fillStyle = grad;           ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);         }, false);

        運(yùn)行結(jié)果

        使用Web瀏覽器顯示上述HTML文件。將顯示如下所示的屏幕,完成漸變繪圖。

        如何使用HTML5 Canvas繪制動(dòng)態(tài)線性漸變

        在畫(huà)布中移動(dòng)鼠標(biāo)。漸變從鼠標(biāo)位置繪制到右下角。

        如何使用HTML5 Canvas繪制動(dòng)態(tài)線性漸變

        移動(dòng)鼠標(biāo)時(shí),漸變會(huì)隨著移動(dòng)

        如何使用HTML5 Canvas繪制動(dòng)態(tài)線性漸變

        如何使用HTML5 Canvas繪制動(dòng)態(tài)線性漸變

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 精品久久久久久中文字幕人妻最新| 午夜精品福利视频| 3D动漫精品一区二区三区| 久久93精品国产91久久综合| 国产精品视频免费| 亚洲AV无码成人精品区在线观看 | 国产成人1024精品免费| 嫩草伊人久久精品少妇AV| 久久亚洲中文字幕精品一区| 91精品国产91久久久久久| 99久久精品毛片免费播放| 熟妇人妻VA精品中文字幕| 无码乱码观看精品久久| 国产午夜精品理论片| 亚洲嫩草影院久久精品| 99久久精品费精品国产一区二区| 亚洲AV成人精品一区二区三区| 无码人妻精品一区二区三区99不卡| 国产精品粉嫩美女在线观看| 欧美精品第欧美第12页| 国产精品天天影视久久综合网| 精品国产三级a∨在线| 亚洲欧美国产精品第1页| 久久99精品国产麻豆蜜芽| 精品一区二区三区免费| 91精品国产91久久久久福利| 精品日韩亚洲AV无码一区二区三区| 国产69精品久久久久99| 国产精品美女久久久久| 88久久精品无码一区二区毛片 | 国产精品一区二区久久不卡 | 人妻无码久久精品| 国产午夜精品一区二区三区不卡 | 亚洲欧美精品一区久久中文字幕| 精品久久久久久无码中文字幕| 91精品在线国产| 国产精品影音先锋| 精品国产自在在线在线观看| 国产精品爱啪在线线免费观看| 国产精品人人爽人人做我的可爱 | 久久久WWW免费人成精品|