title: Saving Image From Picturebox
body: <p>Iam drawing an image to a picturebox. I resize the image in the picturebox as per the width and height to fit it correctly in picutrebox. After that i want to save it, while saving it i also want to save the non image drawn part too in the saved file. Please see the screenshot, in the screenshot i have 2 white portions marked 'X'. when i save the image in picturebox i also want to save the blank portion too (place corssed in red) as either transparent .png or solid white .jpg.</p>
  
  <p>Actually i copied some parts of the code from google and modified. It will be great and so much helpful if someone please explain it line by line.</p>
  
  <p><a href="https://i.stack.imgur.com/qjL1P.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/qjL1P.png" alt="enter image description here"></a></p>
  
  <p><br></p>
  
  <p>THis is what i have donw so far,</p>
  
  <pre><code>private void button1_Click(object sender, EventArgs e)
      {
          OpenFileDialog open = new OpenFileDialog();
          open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp;  *.png)|*.jpg; *.jpeg; *.gif; *.bmp; *.png";
          if (open.ShowDialog() == DialogResult.OK)
          {               
              Image original = Bitmap.FromFile(open.FileName);
              pictureBox1.Image = new Bitmap(ScaleImage(original));
  
              pictureBox1.Padding = new Padding((pictureBox1.Width - ScaleImage(original).Width) / 2, (pictureBox1.Height - ScaleImage(original).Height) / 2, 0, 0);
          }
      }
  
      private Bitmap ScaleImage(Image oldImage)
      {
          double resizeFactor = 1;
  
          if (oldImage.Width &gt; 300 || oldImage.Height &gt; 300)
          {
              double widthFactor = Convert.ToDouble(oldImage.Width) / 300;
              double heightFactor = Convert.ToDouble(oldImage.Height) / 125;
              resizeFactor = Math.Max(widthFactor, heightFactor);
          }
  
          int width = Convert.ToInt32(oldImage.Width / resizeFactor);
          int height = Convert.ToInt32(oldImage.Height / resizeFactor);
          Bitmap newImage = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
  
          newImage.MakeTransparent(Color.White);
  
          Graphics g = Graphics.FromImage(newImage);
  
          g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
          g.DrawImage(oldImage, 0, 0, newImage.Width, newImage.Height);
          return newImage;
      }
      private void button2_Click(object sender, EventArgs e)
      {
          pictureBox1.BackColor = Color.White;
          pictureBox1.Image.Save("D:\\temp.png", ImageFormat.Png);
      }
  </code></pre>