Zielony Smok

JavaFX canvas: Atrybut obwiedni ‘stroke paint’

Atrybut: stroke paint

Typ: Paint

Wartość domyślna: Color.BLACK

Getter: Paint getStroke()

Setter: void setStroke(Paint)

Save/restore: true

Opis: Farba Paint zastosowana do rysowania konturu w operacji konturowania. Po klasie Paint
dziedziczą klasy: Color, ImagePattern, LinearGradient i RadialGradient.
Figury możemy więc konturować 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).

Konturowanie kolorem

Klasa Listing25_42a

Ściągnij klasę Listing25_42a

      GraphicsContext gc = cv.getGraphicsContext2D();
      //-
       gc.setStroke(Color.BLUE);
       gc.setLineWidth(20);
       gc.strokeRect(50,50,200,100);
Konturowanie kolorem
Rys. 25_44. Konturowanie kolorem

Konturowanie gradientem liniowym

Klasa Listing25_42b

Ściągnij klasę Listing25_42b

      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.setStroke(lg1);
      gc.setLineWidth(20);
      gc.strokeRect(50,50,200,100);
Konturowanie gradientem liniowym
Rys. 25_45. Konturowanie gradientem liniowym

Konturowanie gradientem radialnym

Klasa Listing25_42c

Ściągnij klasę Listing25_42c

     GraphicsContext gc = cv.getGraphicsContext2D();
     //-
     Stop[] stops ={new Stop(0, Color.WHITE), new Stop(1, Color.RED)};
     RadialGradient rg = new RadialGradient(-10,0.5,0.5,0.5,0.3,
        true, CycleMethod.REFLECT, stops);
     gc.setStroke(rg);
     gc.setLineWidth(20);
     gc.strokeOval(50,50,200,100);
Konturowanie gradientem radialnym
Rys. 25_46. Konturowanie gradientem radialnym

Konturowanie teksturą (deseniem)

Klasa Listing25_42d

Ściągnij klasę Listing25_42d

      GraphicsContext gc = cv.getGraphicsContext2D();
      //-
      Image im = new Image(new FileInputStream("rozdzial25c/src/rozdzial25c/laka.jpg"));
      ImagePattern imp = new ImagePattern(im);
      gc.setStroke(imp);
      gc.setLineWidth(20);
      gc.strokeOval(50,50,200,100);
Konturowanie deseniem
Rys. 25_47. Konturowanie deseniem

Konturowanie deseniem proporcjonalnym

Klasa Listing25_42e

Ściągnij klasę Listing25_42e

     GraphicsContext gc = cv.getGraphicsContext2D();
     //-
     Image im = new Image(new FileInputStream("rozdzial25c/src/rozdzial25c/laka.jpg"));
     ImagePattern imp = new ImagePattern(im, 0, 0, 0.2, 0.2, true);
     gc.setStroke(imp);
     gc.setLineWidth(20);
     gc.strokeOval(50,50,200,100);
Konturowanie deseniem proporcjonalnym
Rys. 25_48. Konturowanie deseniem proporcjonalnym

Setter ‘Paint getStroke()’

Klasa Listing25_42f

Ściągnij klasę Listing25_42f

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

Widzimy tutaj kolor w modelu RGBA.