如果 PictureBox 小于 Picture,则使 Image 适应 PictureBox
Fit Image to PictureBox if PictureBox is smaller than Picture
我有一个 PictureBox
可以有多个不同的尺寸(取决于屏幕分辨率、window 状态等)。我想要的是当 image
的任一维度(宽度或高度)低于 PictureBox
的相应维度时,使我的 image
适合 PictureBox
。
示例: 如果 image
的宽度大于 PictureBox
的宽度,但是image
的高度小于 PictureBox
的高度,它将调整 image
的宽度直到它等于 PictureBox
的宽度,保持原始纵横比,并且将 image
垂直居中。
如果 PictureBox
大于两个 image
尺寸,则图像只是居中。那部分我用 PictureBoxSizeMode.AutoSize
和一些代码根据 image
和 PictureBox
的大小使 image
居中。
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();
我现在不需要考虑的一件事是调整大小。 window 不允许调整大小,除初始加载外无需考虑任何其他情况。
我发现许多帖子似乎很接近,但没有一个完全有效。 Stretch 倾斜 image
,AutoSize 不根据容器大小调整大小,Zoom当 image
大于 PictureBox
时可能工作正常,但我还没有发现一种方法来防止缩放增加 image
大小以适应 PictureBox
。
因为我将它设置为 picbx.ImageLocation
而不是设置 picbx.Image
属性,所以我还没有找到调整 image
大小的方法PictureBox
内部根据尺寸(宽度或高度)需要作为调整大小的参考。
如果您知道 PictureBox
和 Image
尺寸,当图像的宽度或高度大于图片框,CenterImage
否则:
var imageSize = picbx.Image.Size;
var fitSize = picbx.ClientSize;
picbx.SizeMode = imageSize.Width > fitSize.Width || imageSize.Height > fitSize.Height ?
PictureBoxSizeMode.Zoom : PictureBoxSizeMode.CenterImage;
我有一个 PictureBox
可以有多个不同的尺寸(取决于屏幕分辨率、window 状态等)。我想要的是当 image
的任一维度(宽度或高度)低于 PictureBox
的相应维度时,使我的 image
适合 PictureBox
。
示例: 如果 image
的宽度大于 PictureBox
的宽度,但是image
的高度小于 PictureBox
的高度,它将调整 image
的宽度直到它等于 PictureBox
的宽度,保持原始纵横比,并且将 image
垂直居中。
如果 PictureBox
大于两个 image
尺寸,则图像只是居中。那部分我用 PictureBoxSizeMode.AutoSize
和一些代码根据 image
和 PictureBox
的大小使 image
居中。
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();
我现在不需要考虑的一件事是调整大小。 window 不允许调整大小,除初始加载外无需考虑任何其他情况。
我发现许多帖子似乎很接近,但没有一个完全有效。 Stretch 倾斜 image
,AutoSize 不根据容器大小调整大小,Zoom当 image
大于 PictureBox
时可能工作正常,但我还没有发现一种方法来防止缩放增加 image
大小以适应 PictureBox
。
因为我将它设置为 picbx.ImageLocation
而不是设置 picbx.Image
属性,所以我还没有找到调整 image
大小的方法PictureBox
内部根据尺寸(宽度或高度)需要作为调整大小的参考。
如果您知道 PictureBox
和 Image
尺寸,当图像的宽度或高度大于图片框,CenterImage
否则:
var imageSize = picbx.Image.Size;
var fitSize = picbx.ClientSize;
picbx.SizeMode = imageSize.Width > fitSize.Width || imageSize.Height > fitSize.Height ?
PictureBoxSizeMode.Zoom : PictureBoxSizeMode.CenterImage;