The PictureBox control displays an Image object. The Image object to be displayed can be a member of, or descended from, one of the following classes:


Contains pixel data for an image and its attributes. Typical file types are jpg, gif, or bmp.


A small, transparent bitmap used to represent an object. The typical file extension is ico.


Contains records that describe a sequence of graphics operations. The typical file extension is wmf.

The PictureBox is a relatively simple control, with only three commonly used properties other than those inherited from Control or other base classes. The properties are listed in Table 13-8. The important property is SizeMode, which controls how the image is fit to the PictureBox.

Table 13-8. PictureBox properties


Value type




Read/write. Valid values are members of the BorderStyle enumeration, listed in Table 13-9. The default value is BorderStyle.None.



Read/write. The image to display in the control.



Read/write. How the image is displayed. Valid values are members of the PictureBoxSizeMode enumeration, listed in Table 13-10. The default value is PictureBoxSizeMode.Normal.

Table 13-9. BorderStyle enumeration values




3-D border.


Single line border.


No border.

Table 13-10. PictureBoxSizeMode enumeration values




The PictureBox is automatically sized to fit the image it contains.


The image is centered in the control. If the image is larger than the control, the image is clipped on all four sides.


The image is placed in the upper-left corner of the control. If the image is larger than the control, the image is clipped.


The image is resized to fit the control.

The programs listed in Example 13-5 (in C#) and in Example 13-6 (in VB.NET) demonstrate the PictureBox control with all four possible values of the SizeMode property. For each possible SizeMode value, two picture boxes are presented: one intentionally larger than the image and one smaller. The image used here is a gif file that is 151 pixels wide by 140 pixels high.

Example 13-5. PictureBoxes in C# (PictureBoxes.cs)


using System;
using System.Drawing;
using System.Windows.Forms;
namespace ProgrammingWinApps
 public class PictureBoxes : Form
 public PictureBoxes( )
 Text = "PictureBoxes";
 Size = new Size(550,500);
 AutoScroll = true;
 // Get an image to use
 Image img = Image.FromFile(
 "Dan at Vernal Pool.gif");
 Label lblNormal = new Label( );
 lblNormal.Parent = this;
 lblNormal.Location = new Point(0,20);
 lblNormal.Size = new Size(75,25);
 lblNormal.TextAlign = ContentAlignment.MiddleRight;
 lblNormal.Text = "Normal:";
 PictureBox pbNormalBig = new PictureBox( );
 pbNormalBig.Parent = this;
 pbNormalBig.Size = new Size(200, 200);
 pbNormalBig.Location = new Point(75,20);
 pbNormalBig.BorderStyle = BorderStyle.FixedSingle;
 pbNormalBig.SizeMode = PictureBoxSizeMode.Normal;
 pbNormalBig.Image = img;
 PictureBox pbNormalSmall = new PictureBox( );
 pbNormalSmall.Parent = this;
 pbNormalSmall.Size = new Size(100, 100);
 pbNormalSmall.Location = new Point(325,20);
 pbNormalSmall.BorderStyle = BorderStyle.FixedSingle;
 pbNormalSmall.SizeMode = PictureBoxSizeMode.Normal;
 pbNormalSmall.Image = img;
 Label lblAuto = new Label( );
 lblAuto.Parent = this;
 lblAuto.Location = new Point(0, 250);
 lblAuto.Size = new Size(75,25);
 lblAuto.TextAlign = ContentAlignment.MiddleRight;
 lblAuto.Text = "AutoSize:";
 PictureBox pbAutoBig = new PictureBox( );
 pbAutoBig.Parent = this;
 pbAutoBig.Size = new Size(200, 200);
 pbAutoBig.Location = new Point(75, 250);
 pbAutoBig.BorderStyle = BorderStyle.FixedSingle;
 pbAutoBig.SizeMode = PictureBoxSizeMode.AutoSize;
 pbAutoBig.Image = img;
 PictureBox pbAutoSmall = new PictureBox( );
 pbAutoSmall.Parent = this;
 pbAutoSmall.Size = new Size(100, 100);
 pbAutoSmall.Location = new Point(325,250);
 pbAutoSmall.BorderStyle = BorderStyle.FixedSingle;
 pbAutoSmall.SizeMode = PictureBoxSizeMode.AutoSize;
 pbAutoSmall.Image = img;
 Label lblCenter = new Label( );
 lblCenter.Parent = this;
 lblCenter.Location = new Point(0,480);
 lblCenter.Size = new Size(75,25);
 lblCenter.TextAlign = ContentAlignment.MiddleRight;
 lblCenter.Text = "CenterImage:";
 PictureBox pbCenterBig = new PictureBox( );
 pbCenterBig.Parent = this;
 pbCenterBig.Size = new Size(200, 200);
 pbCenterBig.Location = new Point(75,480);
 pbCenterBig.BorderStyle = BorderStyle.FixedSingle;
 pbCenterBig.SizeMode = PictureBoxSizeMode.CenterImage;
 pbCenterBig.Image = img;
 PictureBox pbCenterSmall = new PictureBox( );
 pbCenterSmall.Parent = this;
 pbCenterSmall.Size = new Size(100, 100);
 pbCenterSmall.Location = new Point(325,480);
 pbCenterSmall.BorderStyle = BorderStyle.FixedSingle;
 pbCenterSmall.SizeMode = PictureBoxSizeMode.CenterImage;
 pbCenterSmall.Image = img;
 Label lblStretch = new Label( );
 lblStretch.Parent = this;
 lblStretch.Location = new Point(0,710);
 lblStretch.Size = new Size(75,25);
 lblStretch.TextAlign = ContentAlignment.MiddleRight;
 lblStretch.Text = "StretchImage:";
 PictureBox pbStretchBig = new PictureBox( );
 pbStretchBig.Parent = this;
 pbStretchBig.Size = new Size(200, 200);
 pbStretchBig.Location = new Point(75,710);
 pbStretchBig.BorderStyle = BorderStyle.FixedSingle;
 pbStretchBig.SizeMode = PictureBoxSizeMode.StretchImage;
 pbStretchBig.Image = img;
 PictureBox pbStretchSmall = new PictureBox( );
 pbStretchSmall.Parent = this;
 pbStretchSmall.Size = new Size(100, 100);
 pbStretchSmall.Location = new Point(325,710);
 pbStretchSmall.BorderStyle = BorderStyle.FixedSingle;
 pbStretchSmall.SizeMode = PictureBoxSizeMode.StretchImage;
 pbStretchSmall.Image = img;
 } // close for constructor
 static void Main( ) 
 Application.Run(new PictureBoxes( ));
 } // close for form class
} // close form namespace

Example 13-6. PictureBoxes in VB.NET (PictureBoxes.vb)


Option Strict On
imports System
imports System.Drawing
imports System.Windows.Forms
namespace ProgrammingWinApps
 public class PictureBoxes : inherits Form
 public sub New( )
 Text = "PictureBoxes"
 Size = new Size(550,500)
 AutoScroll = true
 ' Get an image to use
 dim img as Image = Image.FromFile( _
 "Dan at Vernal Pool.gif")
 dim lblNormal as new Label( )
 lblNormal.Parent = me
 lblNormal.Location = new Point(0,20)
 lblNormal.Size = new Size(75,25)
 lblNormal.TextAlign = ContentAlignment.MiddleRight
 lblNormal.Text = "Normal:"
 dim pbNormalBig as new PictureBox( )
 pbNormalBig.Parent = me
 pbNormalBig.Size = new Size(200, 200)
 pbNormalBig.Location = new Point(75,20)
 pbNormalBig.BorderStyle = BorderStyle.FixedSingle
 pbNormalBig.SizeMode = PictureBoxSizeMode.Normal
 pbNormalBig.Image = img
 dim pbNormalSmall as new PictureBox( )
 pbNormalSmall.Parent = me
 pbNormalSmall.Size = new Size(100, 100)
 pbNormalSmall.Location = new Point(325,20)
 pbNormalSmall.BorderStyle = BorderStyle.FixedSingle
 pbNormalSmall.SizeMode = PictureBoxSizeMode.Normal
 pbNormalSmall.Image = img
 dim lblAuto as new Label( )
 lblAuto.Parent = me
 lblAuto.Location = new Point(0, 250)
 lblAuto.Size = new Size(75,25)
 lblAuto.TextAlign = ContentAlignment.MiddleRight
 lblAuto.Text = "AutoSize:"
 dim pbAutoBig as new PictureBox( )
 pbAutoBig.Parent = me
 pbAutoBig.Size = new Size(200, 200)
 pbAutoBig.Location = new Point(75, 250)
 pbAutoBig.BorderStyle = BorderStyle.FixedSingle
 pbAutoBig.SizeMode = PictureBoxSizeMode.AutoSize
 pbAutoBig.Image = img
 dim pbAutoSmall as new PictureBox( )
 pbAutoSmall.Parent = me
 pbAutoSmall.Size = new Size(100, 100)
 pbAutoSmall.Location = new Point(325,250)
 pbAutoSmall.BorderStyle = BorderStyle.FixedSingle
 pbAutoSmall.SizeMode = PictureBoxSizeMode.AutoSize
 pbAutoSmall.Image = img
 dim lblCenter as new Label( )
 lblCenter.Parent = me
 lblCenter.Location = new Point(0,480)
 lblCenter.Size = new Size(75,25)
 lblCenter.TextAlign = ContentAlignment.MiddleRight
 lblCenter.Text = "CenterImage:"
 dim pbCenterBig as new PictureBox( )
 pbCenterBig.Parent = me
 pbCenterBig.Size = new Size(200, 200)
 pbCenterBig.Location = new Point(75,480)
 pbCenterBig.BorderStyle = BorderStyle.FixedSingle
 pbCenterBig.SizeMode = PictureBoxSizeMode.CenterImage
 pbCenterBig.Image = img
 dim pbCenterSmall as new PictureBox( )
 pbCenterSmall.Parent = me
 pbCenterSmall.Size = new Size(100, 100)
 pbCenterSmall.Location = new Point(325,480)
 pbCenterSmall.BorderStyle = BorderStyle.FixedSingle
 pbCenterSmall.SizeMode = PictureBoxSizeMode.CenterImage
 pbCenterSmall.Image = img
 dim lblStretch as new Label( )
 lblStretch.Parent = me
 lblStretch.Location = new Point(0,710)
 lblStretch.Size = new Size(75,25)
 lblStretch.TextAlign = ContentAlignment.MiddleRight
 lblStretch.Text = "StretchImage:"
 dim pbStretchBig as new PictureBox( )
 pbStretchBig.Parent = me
 pbStretchBig.Size = new Size(200, 200)
 pbStretchBig.Location = new Point(75,710)
 pbStretchBig.BorderStyle = BorderStyle.FixedSingle
 pbStretchBig.SizeMode = PictureBoxSizeMode.StretchImage
 pbStretchBig.Image = img
 dim pbStretchSmall as new PictureBox( )
 pbStretchSmall.Parent = me
 pbStretchSmall.Size = new Size(100, 100)
 pbStretchSmall.Location = new Point(325,710)
 pbStretchSmall.BorderStyle = BorderStyle.FixedSingle
 pbStretchSmall.SizeMode = PictureBoxSizeMode.StretchImage
 pbStretchSmall.Image = img
 end sub ' close for constructor
 public shared sub Main( ) 
 Application.Run(new PictureBoxes( ))
 end sub
 end class
end namespace

The programs listed in Example 13-5 and Example 13-6 start off by setting the AutoScroll property of the form to true so that a vertical scrollbar will automatically appear, since the eight picture boxes don't fit on the form as originally sized.

An image object is instantiated with the static Image.FromFile method:


Image img = Image.FromFile("Dan at Vernal Pool.gif");


dim img as Image = Image.FromFile("Dan at Vernal Pool.gif")

This example assumes that the file is located in the current directory. If it were not, then you would have to specify the full path.

The four sets of controls on the form each consist of a label and two picture boxes. Both picture boxes in each set use the same value of SizeMode; the label identifies which value of SizeMode is used. The first picture box is intentionally larger than the image (200,200 versus 151,140), and the second is intentionally too small (100,100). All picture boxes have their BorderStyle set to BorderStyle.FixedSingle, to make it easy to see how big the picture box is.

The first set has a SizeMode of PictureBoxSizeMode.Normal, the default value. In the large picture box, the image is in the upper-left corner, and in the small picture box, the image is clipped on the right and bottom edges, as shown in Figure 13-7.

Figure 13-8. PictureBoxSizeMode Normal


The next set has a SizeMode of PictureBoxSizeMode.AutoSize. This forces the picture box to be the same size as the image, as shown in Figure 13-8.

Figure 13-9. PictureBoxSizeMode AutoSize


The next set has a SizeMode of PictureBoxSizeMode.CenterImage. This setting centers the image in the picture box, as shown in Figure 13-9. If the picture box is too small for the image, the image is clipped on all four sides.

Figure 13-10. PictureBoxSizeMode CenterImage


The final set has a SizeMode of PictureBoxSizeMode.StretchImage. This either stretches or shrinks the image as necessary to fit the picture box, as shown in Figure 13-10.

Figure 13-11. PictureBoxSizeMode StretchImage


This control is best for images that are relatively static. If the image changes frequently, resetting the Image property is inefficient. For these cases, a custom control is better.

Windows Forms and the .NET Framework

Getting Started

Visual Studio .NET


Windows Forms

Dialog Boxes

Controls: The Base Class

Mouse Interaction

Text and Fonts

Drawing and GDI+

Labels and Buttons

Text Controls

Other Basic Controls

TreeView and ListView

List Controls

Date and Time Controls

Custom Controls

Menus and Bars


Updating ADO.NET

Exceptions and Debugging

Configuration and Deployment

Programming. NET Windows Applications
Programming .Net Windows Applications
ISBN: 0596003218
EAN: 2147483647
Year: 2003
Pages: 148

Flylib.com © 2008-2020.
If you may any questions please contact us: flylib@qtcs.net