我有PictureBox
可以有多种不同的尺寸(取决于屏幕分辨率,窗口状态等)。我希望当image
维度(宽度或高度)低于PictureBox
的相应维度时,image
适合PictureBox
。
示例: 如果image
的宽度大于PictureBox
的宽度,但image
的高度}小于PictureBox
的宽度,它会调整image
宽度,直到它等于PictureBox
的宽度,保持原始宽高比,并垂直居中image
如果PictureBox
大于image
尺寸,则图片只是居中。我已使用PictureBoxSizeMode.AutoSize
完成了该部分,并根据image
和image
的大小将一些代码置于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();
我不需要考虑的一件事就是调整大小。窗口不允许调整大小,除了初始加载之外,不需要考虑任何其他情况。
我发现很多帖子看起来很接近,但没有任何完全有用的帖子。 拉伸偏移image
,自动调整大小不会根据容器大小调整大小,缩放可能会在{{1}时正常工作}}大于image
但我还没有找到一种方法来阻止缩放增加PictureBox
大小以适应image
。
因为我将其设置为PictureBox
而未设置picbx.ImageLocation
属性,所以我还没有找到一种方法来调整picbx.Image
内image
的大小基于尺寸(宽度或高度),需要作为调整大小的参考。
答案 0 :(得分:4)
如果您了解PictureBox
和Image
尺寸,则只需在图片的宽度或高度大于图片框时设置相应的SizeMode
- Zoom
,CenterImage
否则:
var imageSize = picbx.Image.Size;
var fitSize = picbx.ClientSize;
picbx.SizeMode = imageSize.Width > fitSize.Width || imageSize.Height > fitSize.Height ?
PictureBoxSizeMode.Zoom : PictureBoxSizeMode.CenterImage;