如何在封闭容器内自动调整画布大小
使用 JavaFX 的 Canvas API 和 AnimationTimer 制作动画背景时,自动调整画布大小的任务当封闭的 Stage 改变大小时,可能会遇到调整 Canvas 大小的情况。
Approach
在提供的示例代码中,使用了自定义类 CanvasPane。此类将 Canvas 的实例包装在 Pane 中。重写layoutChildren()方法以确保画布的尺寸与封闭窗格的尺寸相匹配。
调整大小约束
请注意,Canvas为其isRes定返回 false () 属性,表明其父级在布局期间无法调整其大小。但是,除了将可调整大小的子级调整为其首选大小之外,Pane 不会执行布局。因此,画布的初始大小由其宽度和高度参数决定。
与原始示例的主要区别
此方法与使用完全饱和颜色的不同之处在于采用一系列色调,随每个动画周期旋转。此外,相关示例演示了如何将控件放置在动画背景之上。
代码实现
<code class="java">public class Baubles extends Application { // ... code omitted ... private static class CanvasPane extends Pane { // ... code omitted ... @Override protected void layoutChildren() { // ... code omitted ... canvas.setWidth(w); canvas.setHeight(h); } } // ... code omitted ... }</code>
此修改后的代码合并了 CanvasPane 类,自动调整 CanvasPane 类的大小父容器内的画布。当舞台大小调整时,画布也会相应调整其大小,确保无缝的背景动画。
以上是如何自动调整封闭容器内 JavaFX 画布的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!