Zielony Smok

JavaFX canvas: metody stroke i fill

Ani segmenty ani elementy ścieżek dodawane do ścieżki bieżącej nie określają czy są konturami, czy wypełnieniami, czy jednym i drugim.

Jeżeli chcemy odrysować elementy lub segmenty musimy użyć metody stroke, metody fill albo obu tych metod.

Obie metody dotyczą tych segmentów lub elementów, które są umieszczone na ścieżce przed miejscem użycia metody.

Elementy lub segmenty umieszczone po obu metodach – nie będą odrysowane.

Klasa Listing25_29

Ściągnij klasę Listing25_29

     gc.rect(20,20,50,30);
     gc.stroke();

Otrzymamy kontur prostokąta (Rys. 25_24):

Działanie metod stroke i fill
Rys. 25_24
     gc.rect(20,20,50,30);
     gc.stroke();
     gc.rect(80, 20, 50, 30);
     gc.rect(140,20, 50, 30);
     gc.fill();

Pierwszy prostokąt również zareagował na metodę fill, ale dwa ostatnie prostokąty nie maja konturu (Rys. 25_25).

Działanie metod stroke i fill
Rys. 25_25
      gc.rect(20,20,50,30);
      gc.stroke();
      gc.rect(80, 20, 50, 30);
      gc.rect(140,20, 50, 30);
      gc.fill();
      gc.rect(200,20, 50, 30);

Ostatni prostokąt nie został odrysowany (Rys. 25_26).

Działanie metod stroke i fill
Rys. 25_26
      gc.rect(20,20,50,30);
      gc.stroke();
      gc.rect(80, 20, 50, 30);
      gc.rect(140,20, 50, 30);
      gc.fill();
      gc.rect(200,20, 50, 30);
      gc.stroke();

Czwarty prostokąt zyskał kontur (Rys. 25_27).

Działanie metod stroke i fill
Rys. 25_27

Zyskały go również wszystkie poprzednie prostokąty.

Jak widzimy powstaje problem, który można rozwiązać przy użyciu – opisanej w następnym wpisie – metody beginPath().

Metoda void stroke()

Rysuje kontur ścieżki przy użyciu aktualnego farby. Na metodę wpływają atrybuty ogólne, atrybuty obwiedni oraz atrybuty ścieżki (nie podlega atrybutowi Fill Rule. Segmenty ścieżki są transformowane w momencie dodawania segmentów, tak że zmiana bieżącej transformacja nie wpływa na te segmenty znowu, ale może wpływać na inne atrybuty w czasie wykonywania operacji stroke().

Metoda void fill()

Rysuje wypełnienie ścieżki przy użyciu aktualnej farby. Na metodę wpływają atrybuty ogólne, atrybuty wypełnienia oraz atrybuty ścieżki. Segmenty ścieżki są transformowane w momencie dodawania segmentów, tak że zmiana bieżącej transformacji nie wpływa na te segmenty znowu, ale może wpływać na inne atrybuty w czasie wykonywania operacji fill().