精品免费在线观看-精品欧美-精品欧美成人bd高清在线观看-精品欧美高清不卡在线-精品欧美日韩一区二区

17站長網(wǎng)

17站長網(wǎng) 首頁 編程教程 Html5教程 查看內(nèi)容

HTML5 Canvas 漸變

html5 Canvas漸變是可以用作形狀的填充或筆觸的顏色模式,而不是純色。漸變是從一種顏色漸變到另一種顏色的顏色模式。漸變有兩種類型:Linear(線性)和Radial(徑向)

html5 Canvas漸變是可以用作形狀的填充或筆觸的顏色模式,而不是純色。漸變是從一種顏色漸變到另一種顏色的顏色模式。這里有一些示例來說明我的意思:

HTML5 Canvas 漸變

有兩種類型的漸變:

Linear(線性)
Radial(徑向)

線性漸變使用水平,垂直或?qū)蔷的線性圖案更改顏色。
徑向漸變用圓形圖案改變顏色,從里到外改變顏色。
兩種類型的漸變都在本文中介紹。

線性漸變

如前所述,線性漸變使用線性圖案更改顏色。使用2D上下文函數(shù)創(chuàng)建線性漸變 createLinearGradient()。這是一個示例:

var canvas  = document.getElementById("ex1");var context = canvas.getContext("2d");
    
var x1 =   0;
var y1 =   0;
var x2 = 100;
var y2 =   0;
var linearGradient1 = context.createLinearGradient(x1, y1, x2, y2);

該createLinearGradient()函數(shù)采用4個參數(shù):x1,y1,x2,y2。這4個參數(shù)確定漸變圖案的方向和延伸。梯度從第一點x1,y1延伸到第二點x2,y2。
通過僅改變x軸上的參數(shù)值(對于x1和x2)來創(chuàng)建水平漸變,如下所示:

var x1 =   0;
var y1 =   0;    var x2 = 100;
var y2 =   0;
var linearGradient1 = context.createLinearGradient(x1, y2);

通過僅更改y軸上的參數(shù)值(對于y1和y2)來創(chuàng)建垂直漸變,如下所示:

var x1 =   0;    var y1 =   0;
var x2 =   0;    var y2 = 100;
var linearGradient1 = context.createLinearGradient(x1, y2);

通過同時更改x和y軸參數(shù)來創(chuàng)建對角線漸變。這是一個示例:

var x1 =   0;
var y1 =   0;
var x2 = 100;
var y2 = 100;
var linearGradient1 = context.createLinearGradient(x1, y2);

顏色停止

上面的示例未顯示漸變的顏色。為了設(shè)置漸變的顏色,可以addColorStop()在漸變對象上使用該功能。這是一個示例:

var linearGradient1 = context.createLinearGradient(0,100,0);
linearGradient1.addColorStop(0, 'rgb(255, 0, 0)');
linearGradient1.addColorStop(1, 'rgb(  0, 0)');

該addColorStop()函數(shù)有2個參數(shù)。第一個參數(shù)是介于0和1之間的數(shù)字。該數(shù)字表明此色標(biāo)將放置在漸變區(qū)域中的距離。第二個參數(shù)是顏色本身。請注意,此示例如何使用rbg(red,green,blue)顏色表示法,其中每個紅色/綠色/藍(lán)色值可以是0到255之間的數(shù)字(以1個字節(jié)表示)。
上面的示例添加了兩個色標(biāo)。第一個是紅色,設(shè)置為從漸變的起點開始(第一個參數(shù)值為0)。第二種顏色是黑色,設(shè)置為位于漸變區(qū)域的末尾(第一個參數(shù)為1)。
您可以為漸變添加兩個以上的色標(biāo)。這是一個具有3個色標(biāo)的示例:

var linearGradient1 = context.createLinearGradient(0,0);
linearGradient1.addColorStop(0  , 0)');
linearGradient1.addColorStop(0.5, 255);
linearGradient1.addColorStop(1  , 0)');

此示例添加了位于漸變中間的藍(lán)色。漸變將因此從紅色平滑變?yōu)樗{(lán)色,然后變?yōu)楹谏?/p>

使用漸變作為填充或描邊樣式

您可以將漸變用作填充或筆觸樣式。只需將2D上下文fillStyle或strokeStyle屬性設(shè)置為指向漸變對象即可完成此操作。這是一個示例:

var linearGradient1 = context.createLinearGradient(0, 0)');
 
context.fillStyle   = linearGradient1;
 
context.strokeStyle = linearGradient1;

現(xiàn)在,您可以使用漸變作為填充或描邊顏色進(jìn)行繪制。這是一個繪制兩個矩形的示例-一個被填充,另一個被描邊(概述):

<canvas id="ex2" width="500" height="125" style="border: 1px solid #cccccc;">
    HTML5 Canvas not supported
</canvas>
<script>
var canvas  = document.getElementById("ex2");
var context = canvas.getContext("2d");
 
var linearGradient1 = context.createLinearGradient(0,0); //horizontal gradient
linearGradient1.addColorStop(0  ,   0)');
linearGradient1.addColorStop(0.5, 255)');
linearGradient1.addColorStop(1  ,   0)');
 
context.fillStyle = linearGradient1;
context.fillRect(10,10, 100);
 
var linearGradient2 = context.createLinearGradient(125, 225,0); //horizontal gradient
linearGradient2.addColorStop(0  ,   0)');
linearGradient2.addColorStop(0.5, 255)');
linearGradient2.addColorStop(1  ,   0)');
 
context.strokeStyle = linearGradient2;
context.strokeRect(125, 10, 100, 100);
 
</script>

這是在畫布上繪制時的結(jié)果:

HTML5 Canvas 漸變

漸變梯度范圍

重要的是要了解漸變的程度。如果漸變從x = 10擴(kuò)展到x = 110,則只有x值在10到110之間的圖形才會應(yīng)用漸變顏色。在此區(qū)域之外繪制的圖形仍會受到漸變的影響,但是將使用漸變的第一種或最后一種顏色進(jìn)行繪制。
例如,假設(shè)一個梯度從x = 150擴(kuò)展到x =350。該梯度將從藍(lán)色漸變?yōu)榫G色。x值小于150繪制的所有圖形都將以藍(lán)色繪制。x值大于350繪制的所有圖形都將以綠色繪制。只有x值介于150和350之間的圖形才會具有漸變顏色。
這是一個代碼示例,該示例使用上述漸變繪制了5個矩形,以說明這一點

<canvas id="ex3" width="500" height="250" style="border: 1px solid #cccccc;">
    HTML5 Canvas not supported
</canvas>
 
<script>
var canvas  = document.getElementById("ex3");
var context = canvas.getContext("2d");
 
var linearGradient1 = context.createLinearGradient(150, 350, 'rgb(0,   0, 255)');
linearGradient1.addColorStop(1, 255, 0)');
 
context.fillStyle = linearGradient1;
 
context.fillRect(10,130, 100);
context.fillRect(150, 200, 100);
context.fillRect(360, 130, 100);
 
context.fillRect(100,120, 150, 100);
context.fillRect(280, 100);
</script>

這就是在畫布上繪制時的結(jié)果。請注意,只有x值在150到350之間的圖形才具有漸變顏色,而其余圖形是全藍(lán)色(第一個色標(biāo))或全綠色(最后一個色標(biāo))。

HTML5 Canvas 漸變

本示例僅在漸變中使用2種顏色,但是如果在漸變中使用3種或更多顏色,則效果相同。在漸變區(qū)域之外,僅使用第一個和最后一個停止色。

漸變程度對于理解正確著色形狀很重要。在許多情況下,可能必須為每種形狀專門定義漸變,以適合繪制形狀的區(qū)域。

徑向漸變

徑向漸變類型是從內(nèi)部顏色向外延伸到一種或多種其他顏色的圓形圖案。以下是一些圖形示例:

HTML5 Canvas 漸變

徑向漸變由2個圓定義。每個圓都有一個中心點和一個半徑。這是一個代碼示例:

var x1 = 100;   // x of 1. circle center point
var y1 = 100;   // y of 1. circle center point
var r1 = 30;    // radius of 1. circle
 
var x2 = 100;   // x of 2. circle center point
var y2 = 100;   // y of 2. circle center point
var r2 = 100;   // radius of 2. circle
 
var radialGradient1 = context.createradialGradient(x1, r1, y2, r2);
 
radialGradient1.addColorStop(0, 255)');
radialGradient1.addColorStop(1,   0)');
 
context.fillStyle = radialGradient1;
context.fillRect(10, 200);

如您所見,定義了兩個中心點(x1,y1和x2,y2),并且定義了兩個半徑(r1和r2)。這些作為參數(shù)傳遞給createradialGradient()2D上下文的功能。
應(yīng)該用不同的半徑定義兩個圓,因此它們將導(dǎo)致一個內(nèi)圓和一個外圓(至少大小)。然后,漸變中的顏色將從一個圓圈圓形延伸到另一個圓圈。
色標(biāo)的工作方式與線性漸變一樣。它們定義了在漸變中使用什么顏色,以及應(yīng)該在漸變范圍內(nèi)放置什么顏色。
添加的色標(biāo)將在兩個圓圈之間的某個位置匹配。例如,顏色停止中的第一個參數(shù)0表示顏色將從第一個圓圈開始的地方開始。顏色停止中的第一個參數(shù)1表示顏色將從第二個圓圈開始的地方開始。
這是在HTML5畫布上繪制時的代碼示例的結(jié)果:

HTML5 Canvas 漸變

如果兩個圓具有相同的中心點,則漸變將是完全圓形的,并且顏色從內(nèi)圓到外圓漸變。如果兩個圓的中心點不同,則漸變將更像圓錐形,就像從燈投射的光(非正交地指向表面)一樣。這是一個類似錐形的代碼示例:

var x1 = 100;
var y1 = 100;
var r1 = 30;
var x2 = 150;
var y2 = 125;
var r2 = 100;
 
var radialGradient1 = context.createradialGradient(x1, r2);
radialGradient1.addColorStop(0, 200);

這是在畫布上繪制漸變時的樣子:

HTML5 Canvas 漸變

返回頂部
主站蜘蛛池模板: 国产乱辈通伦影片在线播放 | 国产交换精品一区二区三区 | 一区二区三区网站在线免费线观看 | 91新视频| 亚州视频一区二区 | 国产福利精品视频 | 开心网五月色婷婷综合图片 | 看国产黄色片 | 特级做人爱c级特级aav毛片 | 一级特级欧美午夜片免费观看 | 国产欧美日韩在线一区二区不卡 | 成人综合国产乱在线 | 高清无遮挡在线观看 | 亚洲妇熟xxxxx妇色黄 | 国产一区二区成人 | 国产亚洲一区二区在线观看 | 亚洲精品麻豆一区二区 | 精品一区二区三区的国产在线观看 | 国产精品极品 | 娇喘呻吟福利视频在线观看 | 91久久综合九色综合欧美98 | 性做久久久久久久久男女 | 国产女乱淫真高清免费视频 | 国产一级做性视频 | 亚洲爱色| 国产高清免费在线观看 | 可以看毛片的网址 | 国产亚洲精彩视频 | 看片网站免费 | 中文字幕1页 | 高清潢色大片 | 青青青青青免精品视频 | 成人爱爱网站在线观看 | 亚洲性色图 | 色婷婷综合激情视频免费看 | 青青青青青免精品视频 | 国产草逼视频 | 日韩一本 | 国内自拍第五一页 | 亚洲午夜久久久久国产 | 伊人久久婷婷丁香六月综合基地 |