Comment redimensionner automatiquement un canevas dans un conteneur englobant
Lorsque vous travaillez avec l'API Canvas de JavaFX et AnimationTimer pour les arrière-plans animés, la tâche de automatiquement il est possible de redimensionner le canevas à mesure que la taille de la scène englobante change.
Approche
Dans l'exemple de code fourni, une classe personnalisée CanvasPane est utilisée. Cette classe encapsule une instance de Canvas dans un volet. La méthode layoutChildren() est remplacée pour garantir que les dimensions du canevas correspondent à celles du volet englobant.
Contraintes de redimensionnement
Notez que Canvas renvoie false pour son isResizing (), indiquant qu'elle ne peut pas être redimensionnée lors de la mise en page par son parent. Cependant, Pane n'effectue pas de mise en page au-delà du redimensionnement des enfants redimensionnables à leurs tailles préférées. Par conséquent, la taille initiale de la toile est déterminée par ses arguments de largeur et de hauteur.
Différences clés par rapport à l'exemple original
Cette approche diffère de l'utilisation de couleurs entièrement saturées en employant une gamme de teintes de couleurs, qui tournent à chaque cycle d'animation. De plus, des exemples associés montrent comment placer des contrôles au-dessus de l'arrière-plan animé.
Implémentation du code
<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>
Ce code révisé intègre la classe CanvasPane, redimensionnant automatiquement le Canvas dans le conteneur parent. Au fur et à mesure que la scène est redimensionnée, le canevas ajustera sa taille en conséquence, garantissant une animation d'arrière-plan transparente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!