Basit Şekillerin Çizimi

Bu derste çizgiler, dikdörtgenler, daireler ve çokgenler gibi basit 2B şekillerin SFML'de nasıl çizildiğini göreceğiz. SFML'de şekilleri çizmek için sf::Shape sınıfı kullanılabilir. Şekil olarak dışbükey bir çokken düşünebilirsiniz.

Şeklin noktalarını saat yönü veya saat yönünün tersi olarak sırayla vermek önemlidir, aksi halde şekil bozuk olacaktır. Şeklin doğru olarak çizilmesi için dışbükey olması da önemlidir, eğer içbükey bir şekil çizmek istiyorsanız şekli dışbükey alt şekillere bölmeyi deneyebilirsiniz.

Şekle yeni bir nokta eklemek için AddPoint fonksiyonunu kullanabilirsiniz:
sf::Shape Polygon;
Polygon.AddPoint(0, -50,  sf::Color(255, 0, 0),     sf::Color(0, 128, 128));
Polygon.AddPoint(50, 0,   sf::Color(255, 85, 85),   sf::Color(0, 128, 128));
Polygon.AddPoint(50, 50,  sf::Color(255, 170, 170), sf::Color(0, 128, 128));
Polygon.AddPoint(0, 100,  sf::Color(255, 255, 255), sf::Color(0, 128, 128));
Polygon.AddPoint(-50, 50, sf::Color(255, 170, 170), sf::Color(0, 128, 128));
Polygon.AddPoint(-50, 0,  sf::Color(255, 85, 85),   sf::Color(0, 128, 128));
Parametreler sırasıyla X, Y noktaları, noktanın rengi ve seçime bağlı olarak ana hat rengidir. Noktaların yerini belirtmek için iki kayar noktalı sayı yerine bir sf::Vector2f de kullanılabilir.

Şekillere konum ve renk gibi öznitelikleri eklendikten sonra bunlara ayrı ayrı ulaşılarak yazılıp, okunabilir:
// Üçüncü noktanın özniteliklerini al
sf::Vector2f Position     = Polygon.GetPointPosition(2);
sf::Color    Color        = Polygon.GetPointColor(2);
sf::Color    OutlineColor = Polygon.GetPointOutlineColor(2); 
// İkinci noktanın özniteliklerini ayarla
Polygon.SetPointPosition(1, sf::Vector2f(50, 100));
Polygon.SetPointColor(1, sf::Color::Black);
Polygon.SetPointOutlineColor(1, sf::Color(0, 128, 128));
Tüm şeklin ana hat genişliğini ayarlamak için SetOutlineThickness fonksiyonunu kullanabilirsiniz:
// Ana hat genişliğini 10'a ayarla
Polygon.SetOutlineThickness(10);
Eğer içi bir renkle dolu olmayan bir şekil çizmek istiyorsak ya da çizdiğimiz şekilden ana hattı kaldırmak istiyorsak aşağıdaki fonksiyonları kullanabilirsiniz:
// Şeklin boyamasını devre dışı bırak
Polygon.EnableFill(false); 
// Ana hat çizimini aktifleştir
Polygon.EnableOutline(true);
SFML'deki her çizilebilir nesne gibi şekiller de konumlarını, boyutlarını ve renklerini ayarlayan ortak fonksiyonları kalıt alırlar.
Polygon.SetColor(sf::Color(255, 255, 255, 200));
Polygon.Move(300, 300);
Polygon.Scale(3, 2);
Polygon.Rotate(45);
Şekli pencereye çizdirmek de diğer çizilebilir nesnelerle aynıdır:
App.Draw(Polygon);


Öntanımlı Şekiller
SFML; çizgi, dikdörtgen ve daire gibi çeşitli temel şekilleri çizmek için yardımcı fonksiyonlar sunar:
sf::Shape Line   = sf::Shape::Line(X1, Y1, X2, Y2, Thickness, Color, [Outline], [OutlineColor]);
sf::Shape Circle = sf::Shape::Circle(X, Y, Radius, Color, [Outline], [OutlineColor]);
sf::Shape Rect   = sf::Shape::Rectangle(X1, Y1, X2, Y2, Color, [Outline], [OutlineColor]);
Ana hat genişliği ve rengi için olan değerler isteğe bağlıdır ve öntanımlı olarak kapalıdır.

Bu dersle birlikte basit çokgenlerin nasıl çizileceğini de öğrenmiş olduk, pekiştirmek için  konuyla ilgili örneklere sfml-gelistirme deposundan ulaşabilirsiniz.