public static UIElement Spine( this UIElement source, int n, int angle )
{
return source.Spine( new Grid(), n, angle, 0.5, 0.5 );
}
public static UIElement Spine( this UIElement source, int n, int angle, double x, double y )
{
return source.Spine( new Grid(), n, angle, x, y );
}
public static UIElement Spine( this UIElement source, Panel panel, int n, int angle, double x, double y )
{
if( n > 0 )
source.Spine( panel, --n, angle ,x , y );
if( n == 0 )
{
panel.Children.Add( source.Clone() );
return panel;
}
panel.Children.Add(
source.Rotate( angle * n , x , y) );
return panel;
}public static UIElement Rotate( this UIElement source, int angle, double x , double y )
{
UIElement e = source.Clone();
e.RenderTransformOrigin = new Point( x, y );
TransformGroup tg;
if( e.RenderTransform is TransformGroup )
{
tg = e.RenderTransform as TransformGroup;
}
else
{
tg = new TransformGroup();
}
tg.Children.Add( new RotateTransform( angle ) );
e.RenderTransform = tg;
return e;
}
// Use It
UIElement .Spine( 36 , 10 , 0.5 , 0.5 );
|