我正在使用
gc.fillText(text, x, y);
在rect上绘制文本。如果文本对于矩形而言太长,则应该在最后进行切割。
我已经尝试了
gc.fillText(text, x, y, maxwidth);
但是文字只是在缩短并且在太长时间内消失。
答案 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();
}
您可以通过单击此示例中的场景来切换剪裁和非剪辑。