WPF create Flower shape


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfMosaic
{
    /// 
    /// Interaction logic for FlowerShape.xaml
    /// 
    public class FlowerShape : Grid
    {
        /// 
        /// 
        /// 
        /// 
        public FlowerShape(int count)
        {
            Width = Height = 100;
            Background = new SolidColorBrush(Colors.Black);
            var strokeBrush= new SolidColorBrush(Colors.White);
            this.Children.Clear();
            var bg = new SolidColorBrush(Color.FromArgb(255, (byte)Utils.rnd.Next(0, 256), (byte)Utils.rnd.Next(0, 256), (byte)Utils.rnd.Next(0, 256)));
            var width = Utils.rnd.Next(10, 51);
            for (int i = 0; i < count; i++)
            {
                var angle = i * (360 / count);
                var transGroup = new TransformGroup();
                transGroup.Children.Add(new RotateTransform() { Angle = angle });
                this.Children.Add(new Ellipse()
                { 
                    StrokeThickness = 1, Stroke = strokeBrush,
                    Margin = new Thickness(0, 0, 0, 50),
                    Fill = bg,
                    Width = width,
                    RenderTransformOrigin = new Point(0.5, 1)
                    ,
                    RenderTransform = transGroup

                }); ; ; ;

            }

        }



    }
}
 void TesCreateShapes() {

            canvas.Children.Clear();
            for (int i = 0; i < 100; i++)
            {
                var shap = new FlowerShape(12){ };
                canvas.Children.Add(shap );
            }
           canvas.UpdateLayout();
            return;
            foreach (FrameworkElement shap in canvas.Children)
            {
                UISaveToPng(shap, @"C:\Users\gwang\Pictures\Mosaic\" + DateTime.Now.ToFileTime() + ".png");
            }
            Title = "done.";
        
        }




       void UISaveToPng(FrameworkElement ui, string fileName)
        {
          
            int width = (int)ui.ActualWidth;
            int height = (int)ui.ActualHeight;
            RenderTargetBitmap bmp = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Pbgra32);
            bmp.Render(ui);
            PngBitmapEncoder encoder = new PngBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(bmp));
            using (FileStream fs = new FileStream(fileName, FileMode.Create))
            {
                encoder.Save(fs);
                fs.Close();
            }
        }