Redimensionner une image dans un PictureBox aussi grand que possible, tout en conservant les proportions?
J'essaie de faire en sorte qu'une image dans un contrôle PictureBox va ajuster sa taille automatiquement en fonction de la taille de la fenêtre, mais de maintenir le ratio d'aspect. Jusqu'à présent tout simplement la mise en SizeMode
à StretchImage
les causes de l'image afin de l'étirer pour s'adapter à l'ensemble du contrôle PictureBox. Cela ignore le ratio d'aspect, ce qui n'est pas ce que je veux.
Est-il possible de maintenir le ratio d'aspect, mais toujours étirer l'image en plus grand, il peut aller de façon dynamique comme la forme de changements de taille? Est-il possible de faire cette et ont-il encore être centré? J'imagine que je puisse recréer l'image en mémoire chaque fois que la fenêtre est redimensionnée, mais cela semble être une mauvaise idée.
source d'informationauteur Jon
Vous devez vous connecter pour publier un commentaire.
Je crois que c'est l'effet de
PictureBoxSizeMode.Zoom
. La documentation dit que:Vous régler cela sur l'
PictureBox.SizeMode
de la propriété. La section "Remarques" de la documentation de cette fonction dit aussi:Vous pouvez, bien sûr, la
PictureBox.SizeMode
des biens, soit dans le concepteur de la Fenêtre Propriétés ou dans le code (par exemple, dans votre formulaire constructeur):Si ce n'est pas faire exactement ce que vous voulez, vous pouvez toujours mettre en œuvre le redimensionnement de la logique de vous-même. Votre préoccupation est que le fait de recréer l'image en mémoire à chaque fois que le contrôle est redimensionné "semble être une mauvaise idée", mais je ne suis pas sûr pourquoi, il semble de cette façon. Le seul problème serait si vous n'avez pas prudent de détruire inutilisés des objets graphiques, comme les vieux
Bitmap
. Non seulement ces objets contiennent des ressources non managées qui ont besoin d'être libéré, vous allez commencer à exercer des pressions extrêmes sur la mémoire, si vous venez de les laisser couler.Sinon, pour éviter de créer temporaire bitmaps, vous pouvez faire ce que le contrôle PictureBox probablement fait à l'interne et à l'utilisation de la
Graphiques.DrawImage
méthode pour gérer l'étirement. Si vous passer un rectangle, il redimensionne automatiquement l'image pour l'adapter à l'intérieur du rectangle.De modifier le "SizeMode" pour
Zoom
.Comme son nom l'indique, "StretchImage" stretch à la taille du fichier image. Facile processus d'élimination aurait donné le même résultat.
Selon la
PictureBoxSizeMode
de la documentation vous pouvez spécifierPictureBoxSizeMode.Zoom
pour obtenir l'image à conserver ses proportions. Il fera un zoom aussi grande que possible sans qu'aucune partie de l'image de débordement de la zone d'image.Et vous pouvez jouer avec les
Station
de la propriété (réglageDockStyle.Remplissez
) pour obtenir la zone de l'image pour la redimensionner à la taille de son conteneur.Vous pouvez l'ajouter à un contrôle de Navigateur Web. À l'aide de la touche Ctrl et le bouton de la souris, vous pouvez zoomer autant que vous le souhaitez.