2013-02-14 82 views

回答

13
  1. 將文本對齊到中心。
  2. 將文本基線設置爲居中。
  3. 在畫布中心繪製文本(將其放置在畫布寬度和高度的一半處)。

這裏有一個例子:

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

+0

謝謝jewelsea,完全按預期工作,看到我現在也瞭解樣本的方法。 – 2013-02-14 20:24:43

0

你想使用

control.setAlignment(Pos.CENTER); and 

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

看到here在這一行動的一些下載的示例代碼。

+0

嗯,不幸的是帆布和它的所有內容是一個完整的節點,所以我擔心這是不行的。 – 2013-02-14 19:57:58

+0

你看過鏈接嗎? – 2013-02-14 20:03:02

+0

我粗略地看過它,我的印象是,這是爲了將節點定位在容器中,例如,在HBox。但是Canvas不是容器/ Canvas中的文本不是節點? – 2013-02-14 20:17:24