WPF C# Tutorial

using System;
using System.Windows;
using System.Windows.Media;
    public class WindowHostingVisual : Window
    {
        DrawingVisual ghostVisual = new DrawingVisual();
        public WindowHostingVisual()
        {
            using (DrawingContext dc = ghostVisual.RenderOpen())
            {
                dc.DrawGeometry(Brushes.Blue, null, Geometry.Parse(
                @"M 240,250
                  C 100,400 100,250 100,200
                  C 0,350 0,250 30,130
                  C 200,0 250,0 250,150 Z"));
                Pen p = new Pen(Brushes.Black, 10);
                p.StartLineCap = PenLineCap.Round;
                p.EndLineCap = PenLineCap.Round;
                dc.DrawLine(p, new Point(75, 160), new Point(175, 150));
            }
            AddVisualChild(ghostVisual);
            AddLogicalChild(ghostVisual);
        }
        protected override int VisualChildrenCount
        {
            get { return 1; }
        }
        protected override Visual GetVisualChild(int index)
        {
            if (index != 0)
                throw new ArgumentOutOfRangeException("index");
            return ghostVisual;
        }
        [STAThread]
        public static void Main()
        {
            WindowHostingVisual whv = new WindowHostingVisual();
            whv.ShowDialog();
        }
    }