Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
HTML’de <canvas>, JavaScript kullanarak tarayıcı içinde piksel tabanlı 2B çizimler, grafikler, animasyonlar ve basit oyun sahneleri oluşturmanızı sağlayan çizim alanıdır. HTML etiketi yalnızca yüzeyi tanımlar; çizimin kendisi genellikle getContext("2d") ile alınan JavaScript çizim bağlamı üzerinden yapılır. Etiketin içine, çizimi göremeyen kullanıcılar için açıklayıcı alternatif içerik eklemek gerekir.

Canvas nasıl çalışır?​


<canvas> başlangıçta boş bir bitmap alanı oluşturur. width ve height öznitelikleri bu çizim alanının gerçek boyutunu belirler. Bu değerler yazılmazsa varsayılan çizim alanı 300 × 150 piksel olur. CSS ile görünen boyutu değiştirebilirsiniz; ancak CSS boyutu ile gerçek çizim boyutu farklı oranlardaysa görüntü bulanıklaşabilir veya esneyebilir.

Çizim yapmak için önce canvas düğümü seçilir, ardından bir çizim bağlamı alınır. En yaygın seçenek 2d bağlamıdır. Örneğin fillRect() bir dikdörtgeni doğrudan çizer; koordinat sisteminin başlangıç noktası canvas’ın sol üst köşesidir.

Çalışan en küçük örnek​


Aşağıdaki dosyayı index.html adıyla kaydedip tarayıcıda açabilirsiniz:

HTML:
<!doctype html>
<html lang="tr">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Canvas örneği</title>
</head>
<body>
  <canvas id="renkli-alan" width="320" height="180" role="img"
          aria-label="Mavi bir dikdörtgen çizimi">
    Renkli bir dikdörtgen çizimi gösterilmektedir.
  </canvas>

  <script>
    const canvas = document.querySelector("#renkli-alan");
    const ctx = canvas.getContext("2d");

    if (!ctx) {
      throw new Error("2D canvas bağlamı alınamadı.");
    }

    ctx.fillStyle = "steelblue";
    ctx.fillRect(40, 30, 240, 120);
  </script>
</body>
</html>

Başarılı sonuçta sayfada 320 × 180 piksel çizim alanı ve içinde mavi bir dikdörtgen görünür. Hiçbir şey görünmüyorsa tarayıcının geliştirici araçlarındaki Console bölümünde hata olup olmadığını kontrol edin; özellikle canvas seçicisinin doğru kimliği kullandığını ve getContext("2d") sonucunun null olmadığını doğrulayın. Canvas öğesi sayfada bulunmadan JavaScript çalıştırılırsa canvas değeri null olabilir.

Canvas ne zaman tercih edilir?​


Canvas; sürekli değişen grafikler, piksel düzenleme, çizim uygulamaları, oyunlar, imza alanları ve animasyonlar için uygundur. Çizim komutları çalıştırıldıktan sonra ortaya çıkan şekiller, normal HTML düğümleri gibi ayrı ayrı DOM nesneleri hâline gelmez. Bu nedenle çizilmiş bir dikdörtgeni CSS seçicisiyle seçemez veya metnini doğrudan ekran okuyucuya aktaramazsınız.

Aşağıdaki ayrım seçim yapmayı kolaylaştırır:
İhtiyaçDaha uygun seçenekTemel neden
Piksel tabanlı animasyon veya oyunCanvasÇizim komutlarıyla bitmap yüzeyini güncelleme
Seçilebilir metin ve bağımsız şekillerSVG veya HTMLÖğeler DOM içinde ayrı ayrı yönetilebilir
Basit statik fotoğraf veya görselimgAlternatif metin ve içerik sunumu daha doğrudandır
Canvas kullanırken erişilebilirlik için yalnızca çizimi üretmekle yetinmeyin. <canvas> içinde çizimin ne anlattığını açıklayan metin veya uygun bir alternatif sunun. Etkileşimli bir uygulamada klavye kullanıcıları için HTML düğmeleri, formlar veya başka erişilebilir kontroller de sağlayın.

Uygulamada dikkat edilecek kararlar​

  1. Gerçek çizim çözünürlüğünü width ve height öznitelikleriyle belirleyin; yalnızca CSS ile boyutlandırmayın.
  2. Çizim türünüzü seçin: 2B işlemler için getContext("2d"), 3B grafikler için WebGL tabanlı bağlamlar kullanılır.
  3. Canvas içeriğinin erişilebilir olmadığını varsayın ve anlamlı alternatif içerik ekleyin.
  4. Animasyonu tarayıcının çizim döngüsüne uygun requestAnimationFrame() ile planlayın; gereksiz büyük canvas alanlarından kaçının.
  5. Canvas boyutunu değiştirdiğinizde mevcut çizimin temizlenebileceğini hesaba katın; boyut ayarını çizimden önce yapın.
Canvas’ın en önemli sınırlaması, çizimin semantik HTML içeriği olmamasıdır. Kullanıcının okuması, araması, seçmesi veya tek tek etkileşmesi gereken içerikler için canvas yerine HTML ya da SVG kullanmak daha doğru olabilir. Canvas görsel sonucu üretir; erişilebilir yapı, etiketleme ve etkileşim sorumluluğu ise geliştiriciye aittir.

Sık sorulan sorular​


Canvas için JavaScript zorunlu mudur?​


Canvas etiketi JavaScript olmadan boş bir alan olarak görüntülenebilir. Ancak çizim, animasyon veya grafik oluşturmak için pratikte JavaScript ya da canvas API’sini kullanan başka bir betik gerekir.

Canvas çizimini PNG olarak alabilir miyim?​


Evet. toDataURL("image/png") gibi API’lerle görüntü temsili alınabilir; bu çağrı tek başına dosyayı kullanıcının diskine kaydetmez. İzin verilmeden başka originden alınan görüntüler canvas’a çizilmişse güvenlik nedeniyle dışa aktarma engellenebilir. Büyük görüntülerde bellek kullanımını da değerlendirin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.