2D Graphics C# Tutorial

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class ImageDraw : System.Windows.Forms.Form
{
  private System.ComponentModel.Container components = null;
  private Bitmap bMapImageA = new Bitmap("YourFile.bmp");
  private Bitmap bMapImageB = new Bitmap("YourFile.bmp");
  private Bitmap bMapImageC = new Bitmap("YourFile.bmp");
  private Rectangle rectA = new Rectangle(10, 10, 90, 90);
  private Rectangle rectB = new Rectangle(10, 110, 90, 90);
  private Rectangle rectC = new Rectangle(10, 210, 90, 90);
  private bool isImageClicked = false;
  private int imageClickedIndex;
  public ImageDraw()
  {
    InitializeComponent();
  }
  protected override void Dispose( bool disposing )
  {
    if( disposing )
    {
      if (components != null) 
      {
        components.Dispose();
      }
    }
    base.Dispose( disposing );
  }
  private void InitializeComponent()
  {
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    this.ClientSize = new System.Drawing.Size(376, 361);
    this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ImageDraw_MouseUp);
    this.Paint += new System.Windows.Forms.PaintEventHandler(this.ImageDraw_Paint);
  }
  [STAThread]
  static void Main() 
  {
    Application.Run(new ImageDraw());
  }
  private void ImageDraw_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  {
    Point mousePt = new Point(e.X, e.Y);
    if(rectA.Contains(mousePt))
    {
      isImageClicked = true;
      imageClickedIndex = 0;
    }
    else if(rectB.Contains(mousePt))
    {
      isImageClicked = true;
      imageClickedIndex = 1;
    }
    else if(rectC.Contains(mousePt))
    {
      isImageClicked = true;
      imageClickedIndex = 2;
    }  
    else  // Not in any shape, set defaults.
    {
      isImageClicked = false;
    }
    Invalidate();
  }
  private void ImageDraw_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  {
    Graphics g = e.Graphics;
    g.DrawImage(bMapImageA, rectA);
    g.DrawImage(bMapImageB, rectB);
    g.DrawImage(bMapImageC, rectC);
    if(isImageClicked == true)
    {
      Pen outline = new Pen(Color.Purple, 5);
      switch(imageClickedIndex)
      {
        case 0:
          g.DrawRectangle(outline, rectA);
          break;
        
        case 1:
          g.DrawRectangle(outline, rectB);
          break;
        
        case 2:
          g.DrawRectangle(outline, rectC);
          break;
        default:
          break;
      }
    }      
  }
}