画布上的中心文字?

时间:2013-02-14 19:46:14

标签: text canvas javafx-2

有人可以举例说明如何在JavaFX 2 Canvas上集中文本吗?

GraphicsContext有一些函数,比如setTextAlign,但我不确定如何使用所有这些方法以及我真正需要的方法。我希望将文本垂直和水平居中。

2 个答案:

答案 0 :(得分:18)

  1. 将文本对齐设置为居中。
  2. 将文本基线设置为居中。
  3. 在画布的中心绘制文本(通过将其定位在画布宽度和高度的一半)。
  4. 以下是一个示例:

    import javafx.application.Application;
    import static javafx.application.Application.launch;
    import javafx.geometry.VPos;
    import javafx.scene.*;
    import javafx.scene.canvas.*;
    import javafx.scene.layout.StackPane;
    import javafx.scene.text.TextAlignment;
    import javafx.stage.Stage;
    
    public class TextCanvas extends Application {
        @Override public void start(Stage primaryStage) {
            Canvas canvas = new Canvas(175, 40);
            GraphicsContext gc = canvas.getGraphicsContext2D();
            gc.setTextAlign(TextAlignment.CENTER);
            gc.setTextBaseline(VPos.CENTER);
            gc.fillText(
                "Text centered on your Canvas", 
                Math.round(canvas.getWidth()  / 2), 
                Math.round(canvas.getHeight() / 2)
            );
    
            StackPane layout = new StackPane();
            layout.getChildren().addAll(canvas);
    
            primaryStage.setScene(new Scene(layout));
            primaryStage.show();
        }
        public static void main(String[] args) { launch(args); }
    }
    

    centered text on canvas

答案 1 :(得分:0)

你想用

  control.setAlignment(Pos.CENTER); and

  control.setStyle("-fx-alignment: CENTER;");

请参阅here了解此操作中的一些可下载示例代码。