MoveTo ничего не смещает. Этот метод устанавливает точку, с которой будет начато рисование линии. И используется именно для рисования линии. MoveTo, LineTo.
Для рисования эллипса нужно указывать координаты прямоугольника. А это не только ширина и высота. Это ещё и положение.
procedure Ellipse(X1, Y1, X2, Y2: Integer); overload; virtual; abstract;
procedure Ellipse(const Rect: TRect); overload;
X1, Y2 - это координаты слева и сверху
X2, Y2 - это координаты справа и снизу
Rect - аналогично, но одной переменной.
Rect.Left, Rect.Top, Rect.Right, Rect.Bottom
Если тебе этого не достаточно, чтобы понять, то вот пример:
Canvas.Ellipse(10, 20, 10 + 40, 20 + 40);
Эллипс будет нарисован по координатам 10;20 размерами 40 на 40