我希望每次,用户调整表单的大小,图片框中的图像也使用相同的值(按比例)调整大小,
我在互联网上搜索了一些代码,并在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的左边,一定不能动,你的建议是好的,但是我想要,图片的左边一开始就保持在同一个点
调整大小之前:
调整大小后
在 Winforms 中,您可以使用 Picturebox 属性来执行此操作,无需代码:
添加图片框并进入控件属性
这给你 5 个选择。同一张图片在Winform上的效果如下:
将其与控件的 anchor 或 dock 结合使用,可将控件保持在您想要的位置,并缩放图像。
听起来您可能需要 Zoom。
放大动作,将锚点设置到所有边(并添加一个组框来模拟控制框:
然后我可以调整表单的大小,在本例中最大化,PictureBox 控件会自行处理,无需额外代码:
注意,因为我使用的是非常矩形的图像,所以我设置了灰色背景来显示控件相对于图像的位置。您可以设置control颜色背景来使其不那么明显,或者使用stretchImage而不是缩放来强制图像始终填充控件,尽管这会在非方形图像上产生大量丑陋的伪影。
拉伸伪像的示例:
我建议你使用 2 个
GroupBox
es 控件,在左侧添加按钮,在右侧添加图像,并使用它们的 Dock
属性。这是一个适合您需求的示例:
调整大小之前
调整大小后
Dock
的groupBox1
属性是Left
,另一个groupBox2
的相同属性是Fill
。此外,图像(位于第二个 groupBox 内)的 Dock
属性设置为 Fill
。
设置pictureBox属性如下: SizeMode 到 StretchImage 锚定到顶部、底部、左侧、右侧