Sargı kurallarını tanımlama

Flash Player 10 ve üstü, Adobe AIR 1.5 ve üstü

Gelişmiş çizim API'leri ayrıca yol "sarması" öğesini (bir yola giden yön) tanıtır. Bir yolun sargısı pozitif (saat yönünde) veya negatif (saat yönünün tersi) olur. Oluşturucunun veri parametreleri için vektör tarafından sağlanan koordinatları yorumlama sırası, sargıyı belirler.

Pozitif ve negatif sargı
Pozitif ve negatif sargı
A.
Oklar çizim yönünü belirtir

B.
Pozitif sargılı (saat yönünde)

C.
Negatif sargılı (saat yönünün tersi)

Ayrıca, Graphics.drawPath() yönteminin "sargı" adında isteğe bağlı üçüncü bir parametre içerdiğine dikkat edin:

drawPath(commands:Vector.<int>, data:Vector.<Number>, winding:String = "evenOdd"):void

Bu bağlamda üçüncü parametre, kesişen yollar için sargı veya dolgu kuralını belirten bir dize veya sabittir. (GraphicsPathWinding sınıfında sabit değerleri GraphicsPathWinding.EVEN_ODD veya GraphicsPathWinding.NON_ZERO olarak tanımlanır.) Yollar kesiştiğinde sargı kuralı önemlidir.

Çift-tek kuralı standart sargı kuralı olup eski çizim API'leri tarafından kullanılır. Çift-tek kuralı aynı zamanda Graphics.drawPath() yöntemi için de varsayılan kuraldır. Çift-tek kuralıyla, kesişen yollar açık ve kapalı dolgular arasında geçiş yapar. İki kare aynı dolgu kesişimiyle çizilirse, kesişimin oluştuğu alan doldurulur. Genellikle bitişik alanların ya ikisi de doldurulur ya ikisi de doldurulmaz.

Sıfır dışı kuralı ise, kesişen yollar tarafından tanımlanan alanların doldurulup doldurulmayacağını belirlemek için sargıyı (çizim yönü) esas alır. Zıt sargı yolları kesiştiğinde, çift-tek kuralına benzer şekilde tanımlanan alan doldurulmaz. Aynı sargıya sahip yollar için, doldurulmayacak alan doldurulur:

Kesişen alanlar için sargı kuralları
Kesişen alanlar için sargı kuralları
A.
Çift-tek sargı kuralı

B.
Sıfır dışı sargı kuralı

Sargı kuralı adları

Adlar, bu dolguların nasıl yönetildiğini tanımlayan daha belirli bir kuralı ifade eder. Pozitif sargılı yollara +1 değeri atanır; negatif sargılı yollara ise -1 değeri atanır. Bir şeklin çevrelenmiş alanındaki noktadan başlayarak o noktadan itibaren belirsiz şekilde genişleyen bir çizgi çizin. Dolguyu belirlemek için çizginin bir yoldan geçme sayısı ve bu yolların birleştirilmiş değerleri kullanılır. Çift-tek sargısı için, çizginin bir yoldan geçme sayısı kullanılır. Sayı tek olduğunda alan doldurulur. Çift sayı olduğunda alan doldurulmaz. Sıfır dışı sargı için, yollara atanan değerler kullanılır. Yolun birleştirilmiş değerleri 0 olmadığında, alan doldurulur. Birleştirilmiş değer 0 olduğunda alan doldurulmaz.

Sargı kuralı sayıları ve dolgular
Sargı kuralı sayıları ve dolgular
A.
Çift-tek sargı kuralı

B.
Sıfır dışı sargı kuralı

Sargı kurallarını kullanma

Bu dolgu kuralları karmaşıktır ancak bazı durumlarda gereklidir. Örneğin, bir yıldız şekli çizdiğinizi düşünün. Standart çift-tek kuralıyla şekil için on çizgi gerekir. Sıfır dışı sargı kuralıyla bu on çizgi dokuza indirilir. Burada beş çizgili bir yıldız için ActionScript ve sıfır dışı sargı kuralı verilmiştir:

graphics.beginFill(0x60A0FF); 
graphics.drawPath( Vector.<int>([1,2,2,2,2]),  Vector.<Number>([66,10, 23,127, 122,50, 10,49, 109,127]),   GraphicsPathWinding.NON_ZERO);

Ve burada da yıldız şekli verilmiştir:

Farklı sargı kullanan bir yıldız şekli
Farklı sargı kuralları kullanan bir yıldız şekli
A.
Çift-tek 10 çizgi

B.
Çift-tek 5 çizgi

C.
Sıfır dışı 5 çizgi

Ve, görüntülere animasyon uygulandıkça veya görüntüler üç boyutlu nesnelerde doku olarak kullanılıp örtüştükçe, sargı kuralları daha çok önem kazanır.