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:
Şekillere konum ve renk gibi öznitelikleri eklendikten sonra bunlara ayrı ayrı ulaşılarak yazılıp, okunabilir:
Öntanımlı Şekiller
SFML; çizgi, dikdörtgen ve daire gibi çeşitli temel şekilleri çizmek için yardımcı fonksiyonlar sunar:
Bu dersle birlikte basit çokgenlerin nasıl çizileceğini de öğrenmiş olduk, pekiştirmek için konuyla ilgili örneklere sfml-gelistirme deposundan ulaşabilirsiniz.
Ş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;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.
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));
Ş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 ayarlaTüm şeklin ana hat genişliğini ayarlamak için SetOutlineThickness fonksiyonunu kullanabilirsiniz:
Polygon.SetPointPosition(1, sf::Vector2f(50, 100));
Polygon.SetPointColor(1, sf::Color::Black);
Polygon.SetPointOutlineColor(1, sf::Color(0, 128, 128));
// Ana hat genişliğini 10'a ayarlaEğ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:
Polygon.SetOutlineThickness(10);
// Şeklin boyamasını devre dışı bırak
Polygon.EnableFill(false);
// Ana hat çizimini aktifleştirSFML'deki her çizilebilir nesne gibi şekiller de konumlarını, boyutlarını ve renklerini ayarlayan ortak fonksiyonları kalıt alırlar.
Polygon.EnableOutline(true);
Polygon.SetColor(sf::Color(255, 255, 255, 200));Şekli pencereye çizdirmek de diğer çizilebilir nesnelerle aynıdır:
Polygon.Move(300, 300);
Polygon.Scale(3, 2);
Polygon.Rotate(45);
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]);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.
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]);
Bu dersle birlikte basit çokgenlerin nasıl çizileceğini de öğrenmiş olduk, pekiştirmek için konuyla ilgili örneklere sfml-gelistirme deposundan ulaşabilirsiniz.
Kaynak: Graphics - Drawing simple shapes
Yorumlar
Yorum Gönder