Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-上传后调整图像大小_C#_Image_Visual Studio - Fatal编程技术网

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已经能够像这样调整图像大小,请将属性设置为。它将使图像与图片大小相同,为什么不投票?我已经说过会发生什么…图像在图片框中显示不完整…显示被裁剪我们阅读了您的问题,您的评论是您第一次告诉我们的。我说过我正在尝试调整图像大小,但不起作用…如果我尝试调整图像大小,但不起作用…图像没有调整大小…很明显,我认为您的属性错误,他需要我认为你有错误的财产,他需要