Размещение фигур в произвольных местах на экране, вероятно, должно быть сделано на панели Canvas (см. Ответ @ phoog).Но если вместо этого вы помещаете это в сетку или другую панель, вы всегда можете изменить свойство Margin, чтобы разместить его там, где вы хотите.
Если вы хотите сделать это, указав центральную точку вместоВ верхнем левом углу эллипса вы можете сделать это:
Ellipse CreateEllipse(double width, double height, double desiredCenterX, double desiredCenterY)
{
Ellipse ellipse = new Ellipse { Width = width, Height = height };
double left = desiredCenterX - (width / 2);
double top = desiredCenterY - (height/ 2);
ellipse.Margin = new Thickness(left, top, 0, 0);
return ellipse;
}
Я не проверял, что это именно то, что вы хотите в компиляторе, но, надеюсь, вы поняли идею.Опять же, использование Canvas было бы предпочтительным методом по сравнению с использованием Margin внутри панели, не связанной с Canvas, но тот же принцип вычисления left и top все равно будет применяться:
Canvas.SetLeft(ellipse, desiredCenterX - (width/2))
Canvas.SetTop(ellipse, desiredCenterY - (height/2))