Zielony Smok

JavaFX canvas: Atrybut obwiedni ‘line join’

Atrybut: line join

Typ: StrokeLineJoin

Wartość domyślna: StrokeLineJoin.MITER

Getter: StrokeLineJoin getLineJoin()

Setter: void setLineJoin(StrokeLineJin)

Save/restore: true

Opis: Kształt złączenia linii lub fragmentów obwiedni.

Istnieją trzy kształty złączenia:

  • StrokeLineCap.MITER – łączy końce zewnętrzne rogów obwiedni przedłużając je aż się spotkają
  • StrokeLineCap.BEVEL – łączy końce zewnętrzne rogów obwiedni prostym odcinkiem
  • StrokeLineCap.ROUND – łączy końce zewnętrzne rogów obwiedni zaokrąglonym łukiem o promieniu połowy szerokości linii

Złączenia linii ‘line join’

Klasa Listing25_44

Ściągnij klasę Listing25_44

package rozdzial25c;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.shape.StrokeLineCap;
import javafx.scene.shape.StrokeLineJoin;
import javafx.stage.Stage;

public class Listing25_44 extends Application {

    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(Stage stage) {
        try {
            Group root = new Group();
            Canvas cv = new Canvas(550, 600);
            GraphicsContext gc = cv.getGraphicsContext2D();
            //
            gc.fillText("MITER", 100, 20);
            gc.fillText("ROUND", 250, 20);
            gc.fillText("BEVEL", 400, 20);
            gc.fillText("BUTT", 500, 100);
            gc.fillText("SQUARE", 500, 300);
            gc.fillText("ROUND", 500, 500);
            //
            gc.setStroke(Color.BLUE);
            gc.setLineWidth(15);
            //-
            gc.beginPath();
            gc.moveTo(50, 150);
            gc.lineTo(150, 150);
            gc.lineTo(150, 50);
            gc.setLineCap(StrokeLineCap.BUTT);
            gc.setLineJoin(StrokeLineJoin.MITER);
            gc.stroke();
            //-
            gc.beginPath();
            gc.moveTo(200, 150);
            gc.lineTo(300, 150);
            gc.lineTo(300, 50);
            gc.setLineCap(StrokeLineCap.BUTT);
            gc.setLineJoin(StrokeLineJoin.ROUND);
            gc.stroke();
            //-
            gc.beginPath();
            gc.moveTo(350, 150);
            gc.lineTo(450, 150);
            gc.lineTo(450, 50);
            gc.setLineCap(StrokeLineCap.BUTT);
            gc.setLineJoin(StrokeLineJoin.BEVEL);
            gc.stroke();
            //-
            gc.beginPath();
            gc.moveTo(50, 350);
            gc.lineTo(150, 350);
            gc.lineTo(150, 250);
            gc.setLineCap(StrokeLineCap.SQUARE);
            gc.setLineJoin(StrokeLineJoin.MITER);
            gc.stroke();
            //-
            gc.beginPath();
            gc.moveTo(200, 350);
            gc.lineTo(300, 350);
            gc.lineTo(300, 250);
            gc.setLineCap(StrokeLineCap.SQUARE);
            gc.setLineJoin(StrokeLineJoin.ROUND);
            gc.stroke();
            //-
            gc.beginPath();
            gc.moveTo(350, 350);
            gc.lineTo(450, 350);
            gc.lineTo(450, 250);
            gc.setLineCap(StrokeLineCap.SQUARE);
            gc.setLineJoin(StrokeLineJoin.BEVEL);
            gc.stroke();
            //-
            gc.beginPath();
            gc.moveTo(50, 550);
            gc.lineTo(150, 550);
            gc.lineTo(150, 450);
            gc.setLineCap(StrokeLineCap.ROUND);
            gc.setLineJoin(StrokeLineJoin.MITER);
            gc.stroke();
            //-
            gc.beginPath();
            gc.moveTo(200, 550);
            gc.lineTo(300, 550);
            gc.lineTo(300, 450);
            gc.setLineCap(StrokeLineCap.ROUND);
            gc.setLineJoin(StrokeLineJoin.ROUND);
            gc.stroke();
            //-
            gc.beginPath();
            gc.moveTo(350, 550);
            gc.lineTo(450, 550);
            gc.lineTo(450, 450);
            gc.setLineCap(StrokeLineCap.ROUND);
            gc.setLineJoin(StrokeLineJoin.BEVEL);
            gc.stroke();
            //-
            StrokeLineJoin slj = gc.getLineJoin();
            System.out.println(slj);
            //-
            root.getChildren().add(cv);
            Scene scene = new Scene(root);
            stage.setScene(scene);
            stage.setTitle("Atrybut obwiedni 'line join'");
            stage.setOnCloseRequest(e -> Platform.exit());
            stage.show();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
BEVEL
Atrybut obwiedni 'line join'
Rys. 25_50. Atrybut obwiedni ‘line join’