C#-上传后调整图像大小
我试图在上传后调整图像大小,但它不起作用 怎么了C#-上传后调整图像大小,c#,image,visual-studio,C#,Image,Visual Studio,我试图在上传后调整图像大小,但它不起作用 怎么了 private void button1_Click(object sender, EventArgs e) { OpenFileDialog open = new OpenFileDialog(); open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp"; if (open.Sho
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
if (open.ShowDialog() == DialogResult.OK)
{
var imagem = new Bitmap(open.FileName);
var resizedImage = new Bitmap(imagem, pictureBox1.Size);
pictureBox1.Image = resizedImage;
}
}
您需要设置图片框的
来自MSDN
默认情况下,在正常模式下,图像位于PictureBox的左上角,图像中对PictureBox来说过大的任何部分都会被剪裁。使用StretchImage值会使图像拉伸或收缩以适合PictureBox。使用缩放值会使图像拉伸或收缩以适合PictureBox;但是,原始图形中的纵横比保持不变
因此,将PictureBox1
上的设置从Normal
更改为StretchImage
或Zoom
,具体取决于您想要的效果。它将使其按您的意愿运行,您可以删除调整大小的代码。您需要设置图片框的大小
来自MSDN
默认情况下,在正常模式下,图像位于PictureBox的左上角,图像中对PictureBox来说过大的任何部分都会被剪裁。使用StretchImage值会使图像拉伸或收缩以适合PictureBox。使用缩放值会使图像拉伸或收缩以适合PictureBox;但是,原始图形中的纵横比保持不变
因此,将
PictureBox1
上的设置从Normal
更改为StretchImage
或Zoom
,具体取决于您想要的效果。它将使其按您的意愿运行,您可以删除调整大小的代码。PictureBox已经能够调整图像大小
如果使用image
属性指定图像,则可以将该属性设置为。这意味着您的代码将如下所示:
var imagem = new Bitmap(open.FileName);
pictureBox1.Image = imagem;
var imagem = new Bitmap(open.FileName);
pictureBox1.BackgroundImage = imagem;
如果要使用BackgroundImage
属性指定图像,则可以将该属性设置为。这意味着您的代码将如下所示:
var imagem = new Bitmap(open.FileName);
pictureBox1.Image = imagem;
var imagem = new Bitmap(open.FileName);
pictureBox1.BackgroundImage = imagem;
从个人经验来看,我发现PictureBox控件是一种痛苦。如果您需要在任何时候更改或删除图像,我总是发现我需要显式地处理该图像,或者它给了我内存泄漏,在某些情况下只是简单的错误。值得注意的是,当您需要在WinForms中进行自定义绘图或渲染时,
面板
控件是一个更好的选择。您也可以在面板
上绘制图像,但根据您的需要,仅使用PictureBox
PictureBox就可以调整图像大小
如果使用image
属性指定图像,则可以将该属性设置为。这意味着您的代码将如下所示:
var imagem = new Bitmap(open.FileName);
pictureBox1.Image = imagem;
var imagem = new Bitmap(open.FileName);
pictureBox1.BackgroundImage = imagem;
如果要使用BackgroundImage
属性指定图像,则可以将该属性设置为。这意味着您的代码将如下所示:
var imagem = new Bitmap(open.FileName);
pictureBox1.Image = imagem;
var imagem = new Bitmap(open.FileName);
pictureBox1.BackgroundImage = imagem;
从个人经验来看,我发现PictureBox控件是一种痛苦。如果您需要在任何时候更改或删除图像,我总是发现我需要显式地处理该图像,或者它给了我内存泄漏,在某些情况下只是简单的错误。值得注意的是,当您需要在WinForms中进行自定义绘图或渲染时,
面板
控件是一个更好的选择。您也可以在面板
上绘制图像,但根据您的需要,您可以使用PictureBox
如果不需要此代码,只需将SizeMode属性设置为StretchImage即可。
然而,代码无法工作的一个非常令人恼火的原因是,从一个图像切换到另一个图像本身并不会触发图片框重画
两种常见的解决方案是
分配图像后调用pictureBox1.Invalidate()
,或分配图像前调用pictureBox1.image=null
即使设置了SizeMode,如果图像与PictureBox的大小相同,您也可能需要执行其中一项操作。您不需要此代码,只需将SizeMode属性设置为StretchImage即可。 然而,代码无法工作的一个非常令人恼火的原因是,从一个图像切换到另一个图像本身并不会触发图片框重画 两种常见的解决方案是 分配图像后调用
pictureBox1.Invalidate()
,或分配图像前调用pictureBox1.image=null
即使设置了SizeMode,您也可能必须执行其中一项操作,如果图像与PictureBox的大小相同,我想不起来了。您告诉我们:会发生什么?PictureBox已经能够像这样调整图像大小,请将属性设置为。它将使图像与图片大小相同,为什么不投票?我已经说过会发生什么…图片框中的图像显示不完整…显示被裁剪。请阅读您的问题,您的评论是您第一次告诉我们的。我说过我正在尝试调整图像大小,但不起作用。如果我正在尝试调整图像大小,但它不起作用…图像没有调整大小…很明显,您告诉我们:会发生什么事?PictureBox已经能够像这样调整图像大小,请将属性设置为。它将使图像与图片大小相同,为什么不投票?我已经说过会发生什么…图像在图片框中显示不完整…显示被裁剪我们阅读了您的问题,您的评论是您第一次告诉我们的。我说过我正在尝试调整图像大小,但不起作用…如果我尝试调整图像大小,但不起作用…图像没有调整大小…很明显,我认为您的属性错误,他需要我认为你有错误的财产,他需要