Canvas JavaFX8画布字体始终为粗体

Canvas JavaFX8画布字体始终为粗体,canvas,fonts,javafx-8,Canvas,Fonts,Javafx 8,我正在使用JavaFXCanvas(目前使用Java8U40)渲染一些图形和文本。我在画布中正确渲染字体时遇到问题。看起来字体总是以粗体绘制。我有一个例子来说明这个问题 首先,这是它看起来的样子。左侧有一个标签组件,右侧有一个画布,两者使用相同的字体 以下是用于生成此示例的代码: package sample; import javafx.application.Application; import javafx.geometry.Orientation; import javafx.ge

我正在使用JavaFXCanvas(目前使用Java8U40)渲染一些图形和文本。我在画布中正确渲染字体时遇到问题。看起来字体总是以粗体绘制。我有一个例子来说明这个问题

首先,这是它看起来的样子。左侧有一个标签组件,右侧有一个画布,两者使用相同的字体

以下是用于生成此示例的代码:

package sample;

import javafx.application.Application;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Label;
import javafx.scene.control.Separator;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

/**
 * Test Canvas Fonts
 */
public class TestCanvas extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        HBox hbox = new HBox();

        hbox.setAlignment(Pos.CENTER_LEFT);
        Label label = new Label("Hello World!");
        Separator separator = new Separator(Orientation.VERTICAL);
        Canvas canvas = new Canvas(100, 40);

        hbox.getChildren().addAll(label, separator, canvas);

        GraphicsContext gc = canvas.getGraphicsContext2D();
        gc.setFill(Color.BLACK);
        gc.setFont(label.getFont());
        gc.strokeText(label.getText(), 5, canvas.getHeight()/2);

        primaryStage.setTitle("Canvas Test");
        primaryStage.setScene(new Scene(hbox, 200, 50));

        primaryStage.show();

    }

    public static void main(String[] args) {
        launch(args);
    }
}
任何关于如何使字体看起来相同的线索都会非常有用


谢谢

我要回答我自己的问题。我不应该在GraphicsContext中使用:
strokeText()
,而应该使用:
fillText()

如果我这样做,效果很好