CodeBlanks Logo Icon CodeBlanks

Canvas ve Paint

Canvas ve Paint ile çizgi, daire ve dikdörtgen çizmeyi öğrenirsin.

Canvas ve Paint

Canvas, üzerine çizim yaptığın yüzeydir; Paint ise fırçadır ve renk, kalınlık gibi özellikleri taşır. Bir daire çizmek için canvas.drawCircle'a merkez nokta, yarıçap ve bir Paint verirsin.

final paint = Paint()
  ..color = Colors.red
  ..style = PaintingStyle.fill;
canvas.drawCircle(Offset(50, 50), 40, paint);

Paint stilleri

Paint'in style özelliği PaintingStyle.fill ile içi boyar, PaintingStyle.stroke ile yalnızca kenarı çizer. strokeWidth kenar kalınlığını belirler. Aynı canvas üzerinde birden fazla Paint kullanabilirsin.

final kenar = Paint()
  ..style = PaintingStyle.stroke
  ..strokeWidth = 3;
canvas.drawRect(rect, kenar);

Uygulama Kırmızı dolu daire çiz

CirclePainter sınıfında paint metodu yaz. Kırmızı dolu bir daire çiz (merkez 50,50, yarıçap 30). main içinde painter örneğini alıp tipini yazdır.

Başlangıç kodu

main.dart
import 'package:flutter/material.dart';

// CirclePainter sınıfını tanımla

void main() {
  // CirclePainter örneğini al ve tipini yazdır
}

Örnek çözüm

main.dart
import 'package:flutter/material.dart';

class CirclePainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()
      ..color = Colors.red
      ..style = PaintingStyle.fill;
    canvas.drawCircle(const Offset(50, 50), 30, paint);
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}

void main() {
  final painter = CirclePainter();
  print(painter.runtimeType);
}

Beklenen çıktı

CirclePainter

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Aşağıdakilerden hangisi geçerli bir drawCircle çağrısıdır?

  • canvas.drawCircle(Colors.red, 40, paint)
  • canvas.drawCircle(40, Offset(50, 50), paint)
  • canvas.drawCircle(Offset(50, 50), 40, paint) Doğru cevap
  • canvas.drawCircle(paint, Offset(50, 50), 40)

Açıklama: drawCircle'ın imzası drawCircle(Offset c, double radius, Paint paint) şeklindedir; önce merkez, sonra yarıçap, en son Paint verilir.

2 drawCircle'a Paint ver

Soru
canvas.drawCircle(Offset(50, 50), 40, ____);
Cevap
canvas.drawCircle(Offset(50, 50), 40, paint);

Açıklama: drawCircle üçüncü parametre olarak Paint nesnesi bekler; Color doğrudan verilemez.

3 Canvas ve Paint eşleşmeleri

Kavram Anlamı
Canvas Çizim yüzeyi
Paint Fırça özellikleri
drawCircle Daire çizer
PaintingStyle.fill İçi dolu boya

İleri seviye bölümündeki tüm dersler