Let's first look at the form; see the following image :
 
 
Now the code:
 
In the form there are two options. First one is to print the whole form & the other one is to print the picture.
 
Let us see first how to print the picture.
 
First of all we have to create an object of Bitmap & its size is as picturebox width & height.
     - Bitmap myBitmap1 = new Bitmap(myPicturebox.Width, myPicturebox.Height);  
 
Now Print this picturebox image.
 
     - myPicturebox.DrawToBitmap(myBitmap1, new Rectangle(0, 0, myPicturebox.Width, myPicturebox.Height));    
- e.Graphics.DrawImage(myBitmap1, 0, 0);  
 
Then dispose the bitmap to release the resources.
 
 
Now create the objects of the PrintDocument & PrintDialog.
     - System.Drawing.Printing.PrintDocument myPrintDocument1 = new System.Drawing.Printing.PrintDocument();  
- PrintDialog myPrinDialog1 = new PrintDialog();  
 
Now create the PagePrint event of PrintDocument
 
     - myPrintDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(myPrintDocument2_PrintPage);  
 
Then accessing the PrintDocument object to PrintDialog.
 
     - myPrinDialog1.Document = myPrintDocument1;  
 
Finally it will print the Image which is in the picturebox.
 
     - if (myPrinDialog1.ShowDialog() == DialogResult.OK)  
- {  
-     myPrintDocument1.Print();  
- }   
 
 
The above code will ask you the printer name in which you can print the picture.
 
The full code for printing the picture.
     - private void myPrintDocument2_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)  
- {  
-  Bitmap myBitmap1 = new Bitmap(myPicturebox.Width, myPicturebox.Height);  
-  myPicturebox.DrawToBitmap(myBitmap1, new Rectangle(0, 0, myPicturebox.Width, myPicturebox.Height));  
-  e.Graphics.DrawImage(myBitmap1, 0, 0);  
-  myBitmap1.Dispose();  
- }  
- private void btnPrintPicture_Click(object sender, EventArgs e)  
- {  
-  System.Drawing.Printing.PrintDocument myPrintDocument1 = new System.Drawing.Printing.PrintDocument();  
-  PrintDialog myPrinDialog1 = new PrintDialog();  
-  myPrintDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(myPrintDocument2_PrintPage);  
-  myPrinDialog1.Document = myPrintDocument1;  
-  if (myPrinDialog1.ShowDialog() == DialogResult.OK)  
-  {  
-   myPrintDocument1.Print();  
-  }  
- }  
 
See the following images :
 
 
 
The same code will be used for the whole form but instead of the pictureboc object it will use this & using the width & height, it will print the whole form.
 
The whole code for printing the form:
     - private void myPrintDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)  
- {  
-  Bitmap myBitmap2 = new Bitmap(this.Width, this.Height);  
-  this.DrawToBitmap(myBitmap2, new Rectangle(0, 0, this.Width, this.Height));  
-  e.Graphics.DrawImage(myBitmap2, 0, 0);  
-  myBitmap2.Dispose();  
- }  
- private void btnPrintForm_Click(object sender, EventArgs e)  
- {  
-  System.Drawing.Printing.PrintDocument myPrintDocument2 = new System.Drawing.Printing.PrintDocument();  
-  PrintDialog myPrinDialog2 = new PrintDialog();  
-  myPrintDocument2.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(myPrintDocument1_PrintPage);  
-  myPrinDialog2.Document = myPrintDocument2;  
-  if (myPrinDialog2.ShowDialog() == DialogResult.OK)  
-  {  
-   myPrintDocument2.Print();  
-  }  
- }  
 
See the following images :
 
 
Hope this is clear to all of you….