Zielony Smok

JavaFX canvas: Atrybut wypełnienia ‘fill paint’

Atrybut: fill paint

Typ: Paint

Wartość domyślna: Color.BLACK

Getter: Paint getFill()

Setter: void setFill(Paint)

Save/restore: true

Opis: Farba Paint zastosowana do wypełnienia kształtu w operacji wypełnienia. Po klasie Paint
dziedziczą klasy: Color, ImagePattern, LinearGradient i RadialGradient.
Figury możemy więc wypełnić kolorem, gradientem liniowym lub radialnym albo teksturą.

Problem kolorów, w tym modele i palety kolorów) w JavaFX został szczegółowo omówiony w książce JavaFX 9. Tworzenie graficznych interfejsów użytkownika (rozdz 9. Feeria kolorów, str. 169 – 190).

Wypełnienie kolorem

Klasa Listing25_40a

Ściągnij klasę Listing25_40a

      GraphicsContext gc = cv.getGraphicsContext2D();
      //-
      gc.setFill(Color.BLUE);
      gc.fillRect(50,50,200,100);
Wypełnienie kolorem
Rys. 25_38

Wypełnienie gradientem liniowym

Klasa Listing25_40b

Ściągnij klasę Listing25_40b

     GraphicsContext gc = cv.getGraphicsContext2D();
     //-
     LinearGradient lg1 = new LinearGradient(0,0,1,0, true,
        CycleMethod.NO_CYCLE, new Stop(0, Color.WHITE),
         new Stop(1, Color.BLUE));
     gc.setFill(lg1);
     gc.fillRect(50,50,200,100);
Wypełnienie gradientem liniowym
Rys. 25_39

Wypełnienie gradientem radialnym

Klasa Listing25_40c

Ściągnij klasę Listing25_40c

      GraphicsContext gc = cv.getGraphicsContext2D();
      //-
      Stop[] stops ={new Stop(0, Color.WHITE),
            new Stop(1, Color.RED)};
      RadialGradient rg = new RadialGradient(-60,0.5,0.5,0.5,0.3,
             true, CycleMethod.NO_CYCLE, stops);
      gc.setFill(rg);
      gc.fillOval(50,50,200,100);
Wypełnienie gradientem radialnym
Rys. 25_40

Wypełnienie teksturą (deseniem)

Klasa Listing25_40d

Ściągnij klasę Listing25_40d

     GraphicsContext gc = cv.getGraphicsContext2D();
     //-
     Image im = new Image(new FileInputStream(
             "rozdzial25c/rozdzial25/images/laka.jpg"));
     ImagePattern imp = new ImagePattern(im);
     gc.setFill(imp);
     gc.fillOval(50,50,200,100);
Wypełnienie teksturą
Rys. 25_41

Wypełnienie deseniem proporcjonalnym

Klasa Listing25_40e

Ściągnij klasę Listing25_40e

     GraphicsContext gc = cv.getGraphicsContext2D();
     //-
     Image im = new Image(new FileInputStream(
               "rozdzial25c/rozdzial25/images/laka.jpg"));
     ImagePattern imp = new ImagePattern(im, 0, 0, 0.2, 0.2, true);
     gc.setFill(imp);
     gc.fillOval(50,50,200,100);
Wypełnienie gradientem proporcjonalnym
Rys. 25_42

Setter ‘Paint getFill()’

Klasa Listing25_40f

Ściągnij klasę Listing25_40f

     GraphicsContext gc = cv.getGraphicsContext2D();
     //-
     gc.setFill(Color.BLUE);
     Paint p = gc.getFill();
     System.out.println(p);
0x0000ffff

Widzimy tutaj kolor w modelu RGBA.