Вы просто получаете позицию UIElement относительно 0,0
(при условии, что вы хотите стандартные позиции).Позиция перевода только относительно себя и не вернет новую позицию самого многоугольника.Следовательно, это должно быть сделано:
var gtransform = myPolygon.TransformToVisual(Application.Current.RootVisual as UIElement);
Point position = gtransform.Transform(new Point(0, 0));
Затем вы можете использовать position.X
и position.Y
, чтобы получить позиции X и Y соответственно.