我希望每次,用户调整Form的大小,pictureBox中的Image,也使用相同的值(按比例)调整大小,
我在互联网上搜索了一些代码,并在 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的左边,它一定不能移动,你的建议是好的,但是我想要的,图片的左边停留在开头的同一点
调整大小之前:
调整大小后
答案 0 :(得分:5)
在Winforms中,您可以使用Picturebox属性执行此操作,无需代码:
添加图片框并转到控件属性
这为您提供了5种选择。其效果在Winform下面具有相同的图像:
将此项与控件的 anchor 或 dock 结合使用,可将控件保持在所需位置,并缩放图像。
听起来你可能想要Zoom。
放大操作,将锚点设置为所有边(并添加一个组框以模拟控制框:
然后我可以调整表单大小,在这种情况下最大化,PictureBox控件自己处理其他代码:
注意,因为我使用的是非常矩形的图像,所以我设置了一个灰色背景来显示控件与图像的对应位置。您可以设置 control 颜色背景以使其不那么明显,或者使用stretchImage而不是zoom来强制图像始终填充控件,尽管这会在非方形图像上产生大量难看的瑕疵。
拉伸工件的示例:
答案 1 :(得分:3)
我建议您使用2个GroupBox
es控件,在左侧添加按钮,在右侧添加图像,并使用它们的Dock
属性。以下是适合您需求的示例:
在调整大小之前
调整大小后
Dock
的{{1}}属性为groupBox1
,其他Left
的相同属性为groupBox2
。此外,图像的Fill
属性(位于第二个groupBox内)设置为Dock
。