private void drawEllipse(MouseEventArgs e, bool isEraser)
        {
            double R1, R2, l, r, b, t;

            l = startPoint.X;
            t = startPoint.Y;
            r = e.GetPosition(inkPanel).X;
            b = e.GetPosition(inkPanel).Y;

            R1 = (r - l) / 2.0;
            R2 = (t - b) / 2.0;

            Geometry.Point center = new Geometry.Point((l + r) / 2.0, (b + t) / 2.0);

            Polygon el = new Polygon();

            el.Stroke = new SolidColorBrush(Color.FromArgb(parameters.LineColor.a,
                                                           parameters.LineColor.r, parameters.LineColor.g,
                                                           parameters.LineColor.b));
            el.StrokeThickness = parameters.Thickness;

            PointCollection myPointCollection = new PointCollection();

            /*
             * foreach (var item in new Geometry.Ellipse(
             *  center, R1, R2).Points(parameters))
             * {
             *  myPointCollection.Add(new Point(item.x, item.y));
             * }*/

            var item = new Geometry.Ellipse(center, R1, R2).Points(parameters);

            for (double Angle = 0; Angle <= 2 * Math.PI; Angle = Angle + 0.01)
            {
                myPointCollection.Add(new Point(0.5 * (l + r) + R1 * Math.Cos(Angle), 0.5 * (b + t) + R2 * Math.Sin(Angle)));
            }

            el.Points = myPointCollection;

            if (checkBoxFill.IsChecked == true)
            {
                el.Fill = new SolidColorBrush(Color.FromArgb(
                                                  parameters.FillColor.a,
                                                  parameters.FillColor.r,
                                                  parameters.FillColor.g,
                                                  parameters.FillColor.b));
            }

            inkPanel.Children.Add(el);

            currentShape = el;
        }
        private void drawTriangle(MouseEventArgs e)
        {
            Geometry.Point center = new Geometry.Point(0, 0);
            Geometry.Point r      = new Geometry.Point(0, 0);

            Polygon tr = new Polygon();

            tr.Stroke = new SolidColorBrush(Color.FromArgb(parameters.LineColor.a,
                                                           parameters.LineColor.r, parameters.LineColor.g,
                                                           parameters.LineColor.b));
            tr.StrokeThickness = parameters.Thickness;

            PointCollection myPointCollection = new PointCollection();

            foreach (var item in new Geometry.Triangle(
                         new Geometry.Point(startPoint.X, startPoint.Y),
                         new Geometry.Point(e.GetPosition(inkPanel).X, e.GetPosition(inkPanel).Y))
                     .Points(parameters))
            {
                myPointCollection.Add(new Point(item.x, item.y));
            }

            tr.Points = myPointCollection;

            if (checkBoxFill.IsChecked == true)
            {
                tr.Fill = new SolidColorBrush(Color.FromArgb(
                                                  parameters.FillColor.a,
                                                  parameters.FillColor.r,
                                                  parameters.FillColor.g,
                                                  parameters.FillColor.b));
            }

            inkPanel.Children.Add(tr);
            currentShape = tr;
        }