Subclass PictureBox

image_pdfimage_print
   
 
using System;
using System.Drawing;
using System.Windows.Forms;
   
class PictureBoxPlusDemo: Form
{
     public static void Main()
     {
          Application.Run(new PictureBoxPlusDemo());
     }
     public PictureBoxPlusDemo()
     {
          Text = "PictureBoxPlus Demo";
   
          PictureBoxPlus picbox = new PictureBoxPlus();
          picbox.Parent = this;
          picbox.Dock = DockStyle.Fill;
          picbox.Image = Image.FromFile("Color.jpg");
     }
}
     class PictureBoxPlus: PictureBox
     {
          protected override void OnPaint(PaintEventArgs pea)
          {
               ScaleImageIsotropically(pea.Graphics, Image,ClientRectangle);
          }
          void ScaleImageIsotropically(Graphics grfx, Image image,
                                       Rectangle rect)
          {
               SizeF sizef = 
                    new SizeF(image.Width / image.HorizontalResolution,
                              image.Height / image.VerticalResolution);
   
               float fScale = Math.Min(rect.Width  / sizef.Width,
                                       rect.Height / sizef.Height);
   
               sizef.Width  *= fScale;
               sizef.Height *= fScale;
          
               grfx.DrawImage(image,
                              rect.X + (rect.Width  - sizef.Width ) / 2,
                              rect.Y + (rect.Height - sizef.Height) / 2,
                              sizef.Width, sizef.Height);
          }
     }