【问题标题】:How to center a text in a rectangle in JavaFX如何在 JavaFX 中将文本居中放置在矩形中
【发布时间】:2021-09-25 14:24:12
【问题描述】:

我正在尝试使用 JavaFX GraphicsContext2D 在矩形的中心绘制一个字符串。 我不想使用 JavaFX 组件,所以请不要推荐它们。

例如,我用以下属性绘制一个矩形:x = 10, y = 10, width = 100, height = 100。现在我想以恰好在中心的方式描边文本(水平和垂直) 的矩形。我该怎么做?

【问题讨论】:

  • 调用setTextAlign(TextAlignment.CENTER);setTextBaseline(VPos.CENTER),然后将文本定位在矩形(55,55)的中心不起作用吗?
  • 有关上下文,另请参阅相关问题:how to put a text into a circle object to display it from circle's center?,其中讨论了text bounds type。请注意,据我所知,无法为画布设置文本边界类型,并且在场景图中使用布局管理器时更适用,因此此答案可能并不直接适用于您的情况。
  • 检查了一个相关示例here。您可能有充分的理由将渲染限制在 Canvas 类型的单个 Node;它尽可能接近主机平台的渲染管道,但您必须自己管理所有几何图形。随着您的理解不断发展,请不要犹豫,重新审视该决定。

标签: java javafx java-8 graphics


【解决方案1】:

作为@James_D comments,您可以使用GraphicsContext 方法setTextAlign()setTextBaseline()fillText() 置于任意Rectangle 的中心。从example 开始,我在tooltips 循环中添加了以下几行,以生成显示的图像:

gc.setTextAlign(TextAlignment.CENTER);
gc.setTextBaseline(VPos.CENTER);
gc.setFill(Color.BLACK);
gc.fillText(color.toString(),
    bounds.getX() + bounds.getWidth() / 2,
    bounds.getY() + bounds.getHeight() / 2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 2021-02-19
    相关资源
    最近更新 更多