如何在封閉容器內自動調整畫布大小
使用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中文網其他相關文章!