gpt4 book ai didi

c# - 按比例调整 pictureBox 的大小以调整 Form 的大小

转载 作者:行者123 更新时间:2023-11-30 19:26:18 31 4
gpt4 key购买 nike

我希望每次用户调整 Form 的大小,pictureBox 中的图像,也使用相同的值(按比例)调整大小,

我在互联网上搜索了一些代码,并在 StackOverFlow 中找到了这个答案 https://stackoverflow.com/a/6501997/3264464

static public Bitmap ScaleImage(Image image, int maxWidth, int maxHeight)
{
var ratioX = (double)maxWidth / image.Width;
var ratioY = (double)maxHeight / image.Height;
var ratio = Math.Min(ratioX, ratioY);
var newWidth = (int)(image.Width * ratio);
var newHeight = (int)(image.Height * ratio);
var newImage = new Bitmap(newWidth, newHeight);
Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, newHeight);
Bitmap bmp = new Bitmap(newImage);
return bmp;
}

我为我的代码添加了函数,但不确定 MaxHeight、MaxWidth 的东西,我的意思是为什么我需要通过参数发送它

并且在 Form1_Resize 事件处理程序中我写了:

private void Form1_Resize(object sender, EventArgs e)
{
Bitmap NewImg = ScaleImage(pictureBox1.Image, 1000, 1000);
pictureBox1.Image = NewImg;
}

但它不起作用..当我调整表单大小时没有任何反应

更新:尝试了所有相同的结果

看下面的图,黑点是PictureBox的左边,不能动,你说的很好,但我想,图片的左边在开始的同一个点上

调整大小之前:

Before

调整大小后

enter image description here

最佳答案

在 Winforms 中,您可以使用 Picturebox 属性来执行此操作,无需代码:

添加图片框并进入控件属性

enter image description here

这为您提供了 5 个选择。下面是同一张图片在Winform上的效果:

enter image description here

  • Normal 只显示图像并适合(我相信从像素 0,0 开始),没有缩放或移动。
  • StretchImage 将缩放并强制适应图像,即使这意味着倾斜图像
  • AutoSize 在这种情况下显示完整图像,在这种情况下图像比表单大,这就是为什么只有一个巨大的蓝色 block 。
  • Center image 保持控件不变并显示图像的中心区域
  • Zoom 放大或缩小图像,使其完整显示在图片框控件中。

将此与控件的 anchor 停靠 结合使用,可以将控件保持在您想要的位置,还可以缩放图像。

听起来您可能需要 Zoom。

放大 Action , anchor 设置到所有边(并添加一个组框来模拟控制框:

enter image description here

然后我可以调整窗体的大小,在本例中为最大化,PictureBox 控件无需额外代码即可自行处理:

enter image description here

请注意,因为我使用的是非常矩形的图像,所以我设置了灰色背景以显示控件相对于图像的位置。您可以设置控件 颜色背景以使其不那么明显,或者使用 stretchImage 而不是缩放来强制图像始终填充控件,尽管这会在非正方形图像上产生大量难看的伪像。

拉伸(stretch)工件示例:

enter image description here

关于c# - 按比例调整 pictureBox 的大小以调整 Form 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23982033/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com