javafx(canvas)将文本剪切为自定义长度以适合矩形

时间:2016-04-20 15:18:56

标签: canvas javafx graphics

我正在使用

gc.fillText(text, x, y);

在rect上绘制文本。如果文本对于矩形而言太长,则应该在最后进行切割。

我已经尝试了

gc.fillText(text, x, y, maxwidth);

但是文字只是在缩短并且在太长时间内消失。

1 个答案:

答案 0 :(得分:2)

您可以使用clip来限制最后一条路径绘制文本的区域(请注意文本的y 0位于基线):

private boolean clip;

@Override
public void start(Stage primaryStage) {
    Canvas canvas = new Canvas(500, 500);

    Scene scene = new Scene(new Group(canvas));

    draw(canvas, clip = !clip);
    scene.setOnMouseClicked(evt -> draw(canvas, clip = !clip));

    primaryStage.setScene(scene);
    primaryStage.show();
}

private static void draw(Canvas canvas, boolean clip) {
    GraphicsContext gc = canvas.getGraphicsContext2D();
    gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
    gc.save();
    if (clip) {
        // draw clipping rect
        gc.rect(100, 50, 300, 300);
        gc.clip();
    }

    String text = "aonrjis  rnsrns jnrs inrs no rsnors nojrsnon rgsn rsön rgsn rsunrs nui rsni rsnrs no naoi reosn s";
    gc.fillText(text, 100, 100);
    gc.restore();
}

您可以通过单击此示例中的场景来切换剪裁和非剪辑。