В вашем объекте Circle вы должны установить радиус окружности и атрибут TranslateTransform. Допустим, ваш круг имеет радиус 15:
private const double Radious = 15.0;
private double _x = Radious;
private double _y = Radious;
private TranslateTransform _translation = new TranslateTransform();
и свойства для обработки координат X и Y круга,
public double X
{
get { return this._x; }
set
{
this._x = value;
_translation.X = this._x - Radious;
}
}
public double Y
{
get { return this._y; }
set
{
this._y = value;
_translation.Y = this._y - Radious;
}
}
и в Silverlight вы можете получить то, где пользователь щелкнул по холсту, установив этот код для события клика на панели и установить центр круга, в котором пользователь щелкнул:
//Get the points where it was clicked
Point clickPoint = e.GetPosition(Canvas);
MyCircle.X = clickPoint.X;
MyCircle.Y = clickPoint.Y;
Теперь, если вы хотите, чтобы они всегда находились в фиксированных позициях, вы можете установить условия, при которых, если пользователь щелкает вокруг числа, затем устанавливает центр круга в центр числа или просто изменяет значение X вашего круга, чтобы перейти в нужную позицию.