【问题标题】:Positioning Canvas in relation to the title bar of the window [closed]相对于窗口的标题栏定位 Canvas [关闭]
【发布时间】:2022-01-17 10:01:13
【问题描述】:

我有一个图形上下文:

gc.strokeText(String.format("%d",test), 0, 0);

我像这样将它添加到舞台上:

p.getChildren().addAll(canvas);

我得到这个结果:

我能做什么,或者有没有办法阻止画布在标题栏后面开始? (我可以通过设置起始位置 x,y 来做到这一点,但这似乎是一个 oncomfortabel 解决方案)

有没有办法将画布设置在标题栏的正下方,不管这个标题栏有多高。

谢谢

【问题讨论】:

  • minimal reproducible example 请 - 演示您想要实现的确切以及它如何不起作用。
  • James_D 回答正确,因此我的问题很清楚。

标签: java javafx


【解决方案1】:

场景及其包含的画布位于标题栏的正下方。问题在于您在画布中放置文本的方式。

文本根据提供的坐标和GraphicsContexttextAlign 属性(确定如何使用x 坐标)和textBaseline 属性(确定如何使用y 坐标)。请参阅documentation 中属性表的“文本属性”部分。

默认textBaseline 属性为VPos.BASELINE,这意味着文本的基线 将使用提供的y 坐标定位,在您的情况下为0。因此,文本基线将位于 0(画布的顶部),并且大部分文本(除任何下降部之外的所有内容)都将位于画布顶部之上并且不可见。

要将文本的顶部定位在 y 坐标 0,请将 textBaseline 设置为 TOP

gc.setTextBaseline(VPos.TOP);
gc.strokeText(String.format("%d",test), 0, 0);

【讨论】:

  • 感谢@James_D,它就像手套一样工作!
猜你喜欢
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 2011-05-01
  • 1970-01-01
相关资源
最近更新 更多