![ContractedBlock.gif](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
private
void
SetPosition(Ellipse ellipse,
double
offset,
double posOffSet, double step)
{
ellipse.SetValue(Canvas.LeftProperty, 50.0
+ Math.Sin(offset + posOffSet * step) * 50.0 );
ellipse.SetValue(Canvas.TopProperty, 50
+ Math.Cos(offset + posOffSet * step) * 50.0 );
}
double posOffSet, double step)
{
ellipse.SetValue(Canvas.LeftProperty, 50.0
+ Math.Sin(offset + posOffSet * step) * 50.0 );
ellipse.SetValue(Canvas.TopProperty, 50
+ Math.Cos(offset + posOffSet * step) * 50.0 );
}
![ContractedBlock.gif](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
const
double
offset
=
Math.PI;
const double step = Math.PI * 2 / 10.0 ;
SetPosition(C0, offset, 0.0 , step);
SetPosition(C1, offset, 1.0 , step);
SetPosition(C2, offset, 2.0 , step);
const double step = Math.PI * 2 / 10.0 ;
SetPosition(C0, offset, 0.0 , step);
SetPosition(C1, offset, 1.0 , step);
SetPosition(C2, offset, 2.0 , step);