HTML : HTML Grafikleri
jpg, png ve gif gibi formatlar web sayfalarının görsel açıdan zenginleştirmek için kullanılır.
Günümüzde HTML’deki gibi çalışma anında grafik çizdirme işlemi için SVG ve Canvas yapıları W3C tarafından duyurulmuş.
SVG
- SVG Ölçeklenebilir Vektör Grafikleri (Scalable Vector Graphics) anlamına gelir.
- SVG vektör temelli grafikleri ifade etmek için kullanılır.
- SVG grafikleri XML formatında tanımlar.
- SVG grafikleri görüntü büyütülse de küçültülse de yeniden boyutlandırılma yapıldığı için kalite düşmez.
- SVG resimleri etiket/metin tabanlı olduğu için aranabilir, indekslenebilir, script kodu ile yazılabilir ya da sıkıştırılabilir.
- SVG dosyaları içindeki her element, her özellik (attribute) hareketlendirilebilir. (Animation)
Örnek:
1 2 3 4 | <svg width="100" height="100"> <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" /> Maalesef tarayıcınız satır içi SVG desteklemiyor. </svg> |
SVG Şekilleri
- Rectangle <rect>
- Circle <circle>
- Ellipse <ellipse>
- Line <line>
- Polyline <polyline>
- Polygon <polygon>
- Path <path>
SVG Rectangle
1 2 3 | <svg width="400" height="110"> <rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" /> </svg> |
SVG Circle
1 2 3 | <svg height="100" width="100"> <circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" /> </svg> |
SVG Ellipse
1 2 3 | <svg height="140" width="500"> <ellipse cx="200" cy="80" rx="100" ry="50" style="fill:yellow;stroke:purple;stroke-width:2" /> </svg> |
SVG Line
1 2 3 | <svg height="210" width="500"> <line x1="0" y1="0" x2="200" y2="200" style="stroke:rgb(255,0,0);stroke-width:2" /> </svg> |
SVG Polygon
1 2 3 | <svg height="210" width="500"> <polygon points="200,10 250,190 160,210" style="fill:lime;stroke:purple;stroke-width:1" /> </svg> |
SVG Polyline
1 2 3 | <svg height="200" width="500"> <polyline points="20,20 40,25 60,40 80,120 120,140 200,180" style="fill:none;stroke:black;stroke-width:3" /> </svg> |
SVG Text
1 2 3 | <svg height="30" width="200"> <text x="0" y="15" fill="red">I love Paint!</text> </svg> |
SVG Path
Path aşağıdaki komutlara göre çizme işlemi yapar.
- M = moveto
- L = lineto
- H = horizontal lineto
- V = vertical lineto
- C = curveto
- S = smooth curveto
- Q = quadratic Bézier curve
- T = smooth quadratic Bézier curveto
- A = elliptical Arc
- Z = closepath
1 2 3 | <svg height="210" width="400"> <path d="M150 0 L75 200 L225 200 Z" /> </svg> |
SVG Stroke
Çizgi kalınlığı veya şeklini belirler.
1 2 3 4 5 6 7 | <svg height="80" width="300"> <g fill="none"> <path stroke="red" d="M5 20 l215 0" /> <path stroke="black" d="M5 40 l215 0" /> <path stroke="blue" d="M5 60 l215 0" /> </g> </svg> |
SVG Filters
SVG’de görüntülere çeşitli filtreler uygulayabilirsiniz. Burada iki temel örnek verilecektir fakat birçok filter olduğunu unutmayın. İstediğiniz bir tarz filter’ı SVG Filters araması yaparak bulabilirsiniz.
1 2 3 4 5 6 7 8 | <svg height="110" width="110"> <defs> <filter id="f1" x="0" y="0"> <feGaussianBlur in="SourceGraphic" stdDeviation="15" /> </filter> </defs> <rect width="90" height="90" stroke="green" stroke-width="3" fill="yellow" filter="url(#f1)" /> </svg> |
SVG Gradients
Bir renkten diğer renge geçiş ile renklendirme yapabilir ve DOM üzerinden JavaScript ile bu etiketlere müdale edebilirsiniz.
1 2 3 4 5 6 7 8 9 10 | <svg height="150" width="500"> <defs> <radialGradient id="grad1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%"> <stop offset="0%" style="stop-color:rgb(255,255,255); stop-opacity:0" /> <stop offset="100%" style="stop-color:rgb(0,0,255);stop-opacity:1" /> </radialGradient> </defs> <ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad1)" /> </svg> |
HTML Canvas
- Canvas, Tuval anlamına gelir.
- <canvas> elementi script'ler (genellikle JavaScript) yoluyla grafikler çizmek için kullanılır.
- <canvas> grafikler için sadece bir tutucudur (tuval).Gerçekten bir grafik çizmek için script kullanmalısınız.
- Canvas ta SVG gibi yollar, kutular, daireler, yazılar ve resimler eklemek için bir kaç değişik metod kullanır.
- JavaScript tarafında kodlandığı için event (olay) tabanlı tıklama, çift tıklama, klavye girişleri kontrol edilebilir.
- Animasyon eklenebilir. Özellikle HTML tabanlı oyunlar için kullanılabilir.
1 | <canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"></canvas> |
Canvas
getElementByID ile HTML içindeki canvas elementi bulunur.
getContext ile tuval hazır hale getirilir.
fillStyle ile renk belirlenip fillRect komutu ile bir dikdörtgen çizimi yapılır.
1 2 3 4 | var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); ctx.fillStyle = "#FF0000"; ctx.fillRect(0, 0, 150, 75); |
Canvas Saat Örneği:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | <canvas id="canvas" width="400" height="400" style="background-color:#333"> </canvas> <script> var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var radius = canvas.height / 2; ctx.translate(radius, radius); radius = radius * 0.90 setInterval(drawClock, 1000); function drawClock() { drawFace(ctx, radius); drawNumbers(ctx, radius); drawTime(ctx, radius); } function drawFace(ctx, radius) { var grad; ctx.beginPath(); ctx.arc(0, 0, radius, 0, 2*Math.PI); ctx.fillStyle = 'white'; ctx.fill(); grad = ctx.createRadialGradient(0,0,radius*0.95, 0,0,radius*1.05); grad.addColorStop(0, '#333'); grad.addColorStop(0.5, 'white'); grad.addColorStop(1, '#333'); ctx.strokeStyle = grad; ctx.lineWidth = radius*0.1; ctx.stroke(); ctx.beginPath(); ctx.arc(0, 0, radius*0.1, 0, 2*Math.PI); ctx.fillStyle = '#333'; ctx.fill(); } function drawNumbers(ctx, radius) { var ang; var num; ctx.font = radius*0.15 + "px arial"; ctx.textBaseline="middle"; ctx.textAlign="center"; for(num = 1; num < 13; num++){ ang = num * Math.PI / 6; ctx.rotate(ang); ctx.translate(0, -radius*0.85); ctx.rotate(-ang); ctx.fillText(num.toString(), 0, 0); ctx.rotate(ang); ctx.translate(0, radius*0.85); ctx.rotate(-ang); } } function drawTime(ctx, radius){ var now = new Date(); var hour = now.getHours(); var minute = now.getMinutes(); var second = now.getSeconds(); //hour hour=hour%12; hour=(hour*Math.PI/6)+ (minute*Math.PI/(6*60))+ (second*Math.PI/(360*60)); drawHand(ctx, hour, radius*0.5, radius*0.07); //minute minute=(minute*Math.PI/30)+(second*Math.PI/(30*60)); drawHand(ctx, minute, radius*0.8, radius*0.07); // second second=(second*Math.PI/30); drawHand(ctx, second, radius*0.9, radius*0.02); } function drawHand(ctx, pos, length, width) { ctx.beginPath(); ctx.lineWidth = width; ctx.lineCap = "round"; ctx.moveTo(0,0); ctx.rotate(pos); ctx.lineTo(0, -length); ctx.stroke(); ctx.rotate(-pos); } </script> |
- 1 Nisan 2022
Diğer Yazılarımız
Tüm YazılarımızSoru işareti kalmasın
Bu yazı hakkında aklınıza takılanlar, bir fikriniz belkide şikayetiniz vardır. Yada yazımızda hatalar olduğunu düşünüyor olabilirsiniz. Peki neden bize ulaşmayı düşünmeyesiniz ki?
Hizmetlerimiz
Binlerce müşterimizin yararlandığı 100'e yakın hizmetlerimizden sizlerde yararlanabilirsiniz. Onlarca ücretsiz web hizmeti ve profesyonel destekle sizleri daima daha ileriye taşımayı hedefliyoruz.
Tüm Yenilik ve Kampanyalardan Haberdar Ol
Son Yazılar
- CSS Grid Kullanımı Başlangıç Rehberi 1 Ocak 2025
- C# While Döngüsü Kullanımı 1 Ocak 2025
- C# ile Dosya Okuma ve Yazma İşlemleri 29 Aralık 2024