2D Graphics C#

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Drawing.Drawing2D;
public class Form1 : System.Windows.Forms.Form
{
  private System.ComponentModel.Container components = null;
  public Form1()
  {
    InitializeComponent();
  }
  protected override void Dispose( bool disposing )
  {
    if( disposing )
    {
      if (components != null) 
      {
        components.Dispose();
      }
    }
    base.Dispose( disposing );
  }
    protected override void OnPaint ( PaintEventArgs e) {
      Rectangle r1 = new Rectangle(10, 10, 50, 50);
      Rectangle r2 = new Rectangle(40, 40, 50, 50);
      Region r = new Region(r1);
      r.Union(r2);
      GraphicsPath path = new GraphicsPath(new Point[] {new Point(45, 45),
                                                        new Point(145, 55),
                                                        new Point(200, 150),
                                                        new Point(75, 150),
                                                        new Point(45, 45)
                                                       }, new byte[] {  (byte)PathPointType.Start,
                                                                        (byte)PathPointType.Bezier,
                                                                        (byte)PathPointType.Bezier,
                                                                        (byte)PathPointType.Bezier,
                                                                        (byte)PathPointType.Line
                                                                     });
      r.Union(path);
      e.Graphics.FillRegion(Brushes.Blue, r);
    }
   private void InitializeComponent() {
      this.components = new System.ComponentModel.Container();
      this.Size = new System.Drawing.Size(300,300);
      this.Text = "Form1";
    }
    static void Main() {
    Application.Run(new Form1());
  }
}