我有一个PictureBox,它可以具有多种不同的大小(取决于屏幕分辨率、窗口状态等)。我想要的是,当图像的任一维度(宽度或高度)低于PictureBox的相应维度时,将我的图像适配到PictureBox。
例如:如果图像的宽度大于PictureBox的宽度,但图像的高度小于PictureBox的高度,则会调整图像的宽度,直到与PictureBox的宽度相等,保持原始纵横比,并在垂直方向上居中图像。
如果PictureBox大于图像的两个尺寸,则只需将图像居中。我已经使用PictureBoxSizeMode.AutoSize完成了这部分工作,并编写了一些代码来根据图像和PictureBox的大小居中图像。
例如:如果图像的宽度大于PictureBox的宽度,但图像的高度小于PictureBox的高度,则会调整图像的宽度,直到与PictureBox的宽度相等,保持原始纵横比,并在垂直方向上居中图像。
如果PictureBox大于图像的两个尺寸,则只需将图像居中。我已经使用PictureBoxSizeMode.AutoSize完成了这部分工作,并编写了一些代码来根据图像和PictureBox的大小居中图像。
picbx.ImageLocation = "Image path here";
picbx.SizeMode = PictureBoxSizeMode.AutoSize;
picbx.Anchor = AnchorStyles.None;
picbx.Location = new Point((picbx.Parent.ClientSize.Width / 2) - (picImage.Width / 2),
(picbx.Parent.ClientSize.Height / 2) - (picImage.Height / 2));
picbx.Refresh();
有一件事情我不需要考虑,那就是实时调整大小。窗口不允许调整大小,除了初始加载之外,没有必要考虑任何其他情况。
我发现很多帖子似乎都接近问题所在,但没有一个完全解决问题。 Stretch 会扭曲图片,image
,AutoSize 不会根据容器大小调整大小,Zoom 可能适用于当 image
大于 PictureBox
时,但我还没有找到防止缩放使 image
大小适应 PictureBox
的方法。
因为我将其设置为 picbx.ImageLocation
而不是设置 picbx.Image
属性,所以我还没有找到一种方法来根据需要调整大小的尺寸(宽度或高度)来调整 PictureBox
内部的 image
的大小。