【发布时间】:2016-12-17 01:08:28
【问题描述】:
我有一个PictureBox,它可以有多种不同的尺寸(取决于屏幕分辨率、窗口状态等)。当image 的任一尺寸(宽度或高度)低于PictureBox 的相应尺寸时,我想要将image 与PictureBox 相匹配。
示例:如果image的宽度大于PictureBox的宽度,但image的高度小于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();
我不需要考虑的一件事是立即调整大小。该窗口不允许调整大小,除了初始加载之外,无需考虑任何其他情况。
我发现许多帖子似乎很接近,但没有一个完全有效。 Stretch 使image 倾斜,AutoSize 不会根据容器大小调整大小,当image 较大时,Zoom 可能会正常工作比PictureBox,但我还没有找到一种方法来防止缩放增加image 大小以适应PictureBox。
因为我将它设置为 picbx.ImageLocation 而没有设置 picbx.Image 属性,所以我还没有找到一种方法来根据尺寸(宽度或高度),需要作为调整大小的参考。
【问题讨论】:
标签: c# image winforms picturebox