HTML5 Canvas Gradient Efekti
Bu yazıda Photoshop’da sıkça kullandığımız Gradient efektini, HTML5 ile birlikte gelen Canvas elementini nasıl kullanabiliriz bunu göz atacağız.
Canvas elementi, HTML5 destekli tüm tarayıcılarda çalışmaktadır.
Renk durağı Eklemek (Add Color Stop)
addColorStop(ofset, renk)
Bu metodun amacı renk durağı eklemektir.Örnek;
addColorStop(0,"red") addColorStop(0.5,"green") addColorStop(1,"blue")
ofset: parametresi 0.0 ve 1.0 arasında değer alır. Örnekde; 0 gradyan’ın başını temsil eder. 0.5 ortasını, 1 ise sonunu ifade eder.
renk: ofset’i 0 olarak atadığımız zaman bu parametreye “red” değerini atarsak gradyan’ımız kırmızı ile başlar. Aynı şekilde ofset’i 1 olarak tanımlanmış ise bu renk bitişe eklenir. Bu parametre ayrıca HEX ve RGBA değerleri de alabilir (#FFF, rgba(0,0,0,0.2) gibi).
Doğrusal Gradyan (Linear Gradient)
createLinearGradient(x0,y0,x1,y1)
x0,y0: Gradyan’ın x ve y yönünde başlangıç değerini alırlar.
x1,y1: Gradyan’ın x ve y yönünde bitiş değerini alırlar.
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8" /> <title>HTML5 Canvas Gradient Efekti</title> <style type="text/css"> body{ margin:0; padding:0; } button{ float:left; margin-right:2px; border:1px solid black; } button:hover{ background:black; color:white; cursor:pointer; } </style> <script type="text/javascript"> var canvas,ctx; window.onload = function() { canvas = document.getElementById('linearCanvas'); ctx = canvas.getContext('2d'); linearCiz("red","white","red"); }; function linearCiz(r1,r2,r3) { // Linear Gradient nesnesi oluşturuyor. var grd = ctx.createLinearGradient(0,0,canvas.width,0); //Renk durakları ekleniyor grd.addColorStop(0,r1); // 0 ile başlıyor. grd.addColorStop(0.5,r2); // 0.5 ile ortadaki renk belirleniyor. grd.addColorStop(1,r3); // 1 ile gradyan bitiyor. ctx.fillStyle = grd; // oluşturulan gradyan dikdörtgen dolgusuna veriliyor ctx.fillRect(0,0,canvas.width,canvas.height); } </script> </head> <body> <div style="width:540px;"> <canvas id="linearCanvas" width="540" height="150" style="float:left;"></canvas> <!-- Buton Fonksiyonları --> <button onClick="linearCiz('red','white','red');">Kırmızı-Beyaz-Kırmızı</button> <button onClick="linearCiz('red','yellow','red')">Kırmızı-Sarı-Kırmızı</button> <button onClick="linearCiz('darkblue','yellow','darkblue')">Lacivert-Sarı-Lacivert</button> <button onClick="linearCiz('black','white','black')">Siyah-Beyaz-Siyah</button> </div> </body> </html>
Işınsal Gradyan (Radial Gradient)
createRadialGradient(x0,y0,r0,x1,y1,r1)
x0,y0,x1,y1: Doğrusal gradyandaki gibi x ve y yönünde gradyanın başlangıç ve bitiş değerlerini alırlar.
r0,r1: Gradyan’ın çap değerini belirlerler.
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8" /> <title>HTML5 Canvas Gradient Efekti</title> <style type="text/css"> body{ margin:0; padding:0; } button{ float:left; margin-right:2px; border:1px solid black; } button:hover{ background:black; color:white; cursor:pointer; } </style> <script type="text/javascript"> var canvas,ctx; window.onload = function() { canvas = document.getElementById('radialCanvas'); ctx = canvas.getContext('2d'); radialCiz('red','orange','yellow','green','blue','gray'); }; function radialCiz(r1,r2,r3,r4,r5,r6) { // Radial Gradient nesnesi oluşturuyor. var grd = ctx.createRadialGradient(260, 100, 20, 260, 75, 75); //Renk durakları ekleniyor grd.addColorStop(0, r1); grd.addColorStop(0.17, r2); grd.addColorStop(0.33, r3); grd.addColorStop(0.5, r4); grd.addColorStop(0.666, r5); grd.addColorStop(1, r6); ctx.fillStyle = grd; // oluşturulan gradyan dikdörtgen dolgusuna veriliyor ctx.fillRect(0,0,canvas.width,canvas.height); } </script> </head> <body> <div style="width:540px;"> <canvas id="radialCanvas" width="540" height="150" style="float:left;"></canvas> <!-- Buton Fonksiyonları --> <button onClick="radialCiz('red','orange','yellow','green','blue','gray');">Gökkuşağı</button> <button onClick="radialCiz('red','#d50000','#9b0000','#ffe6e6','#ff5454','red');">Kırmızı-Beyaz-Kırmızı</button> <button onClick="radialCiz('red','#ff7e00','yellow','#cfbe00','#fff36a','red')">Kırmızı-Sarı-Kırmızı</button> <button onClick="radialCiz('darkblue','#4040ab','#fcff00','darkblue','#5e43b4','#ffe50a')">Lacivert-Sarı-Lacivert</button> </div> </body> </html>