Han*_*ank 2 c# image picturebox winforms
我有一个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();
Run Code Online (Sandbox Code Playgroud)
我不需要考虑的一件事是在当下调整大小。该窗口不允许调整大小,并且不需要考虑除初始加载之外的任何其他情况。
我发现许多帖子似乎很接近,但没有完全有效的帖子。拉伸偏斜的image,自动调整大小不会根据容器的大小调整和缩放可以正常工作的时候image是比较大的PictureBox,但我还没有想出一个办法,以防止变焦从增加image的大小以适应PictureBox。
因为我将它设置为 anpicbx.ImageLocation而没有设置picbx.Image属性,所以我还没有想出一种方法来根据需要作为调整大小参考的尺寸(宽度或高度)来调整image内部PictureBox大小。
如果您知道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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6092 次 |
| 最近记录: |