So ändern Sie die Größe einer Leinwand innerhalb eines umschließenden Containers automatisch
Bei der Arbeit mit der Canvas-API und dem AnimationTimer von JavaFX für animierte Hintergründe erfolgt die Aufgabe automatisch Es kann vorkommen, dass die Größe der Leinwand geändert wird, wenn sich die Größe der umschließenden Bühne ändert.
Ansatz
Im bereitgestellten Beispielcode wird eine benutzerdefinierte Klasse CanvasPane verwendet. Diese Klasse umschließt eine Instanz von Canvas in einem Pane. Die Methode „layoutChildren()“ wird überschrieben, um sicherzustellen, dass die Abmessungen der Leinwand mit denen des umschließenden Bereichs übereinstimmen.
Einschränkungen bei der Größenänderung
Beachten Sie, dass Canvas für isResizable „false“ zurückgibt ()-Eigenschaft, die angibt, dass die Größe während des Layouts durch das übergeordnete Element nicht geändert werden kann. Pane führt jedoch keine Layout-Vorgänge durch, die über die Größenänderung von untergeordneten Elementen auf ihre bevorzugten Größen hinausgehen. Daher wird die anfängliche Größe der Leinwand durch ihre Breiten- und Höhenargumente bestimmt.
Hauptunterschiede zum Originalbeispiel
Dieser Ansatz unterscheidet sich von der Verwendung vollständig gesättigter Farben durch die Verwendung von eine Reihe von Farbtönen, die sich mit jedem Animationszyklus drehen. Darüber hinaus veranschaulichen zugehörige Beispiele, wie Steuerelemente über dem animierten Hintergrund platziert werden.
Code-Implementierung
<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>
Dieser überarbeitete Code enthält die CanvasPane-Klasse und passt die Größe automatisch an Canvas im übergeordneten Container. Wenn die Größe der Bühne geändert wird, passt die Leinwand ihre Größe entsprechend an und sorgt so für eine nahtlose Hintergrundanimation.
Das obige ist der detaillierte Inhalt vonWie ändere ich automatisch die Größe eines JavaFX-Canvas innerhalb eines umschließenden Containers?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!