Разные элементы пользовательского интерфейса отображаются в одних и тех же координатах, но никогда не пересекаются?почему?

#android #view #android-canvas

#Android #Вид #android-canvas

Вопрос:

В настраиваемом View , как показано в приведенном ниже коде, я рисую a point в определенном месте на экране, а затем я рисую an, oval который должен повторять то, что point я нарисовал. Но проблема в том, что, несмотря на то, что oval is начал отрисовываться в одном и том же месте (x, y), point удивительно, что oval это не передается point , оно отрисовывается немного ниже точки.

Код:

 protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);

    RectF oval = new RectF();

    ovalTop = screenW/2;
    ovalLeft = screenH/2;
    ovalBottom = (ovalTop   100);
    ovalRight = ovalLeft   100;

    canvas.drawPoint(ovalTop, ovalLeft, mArcPaint);
    oval.set(ovalTop, ovalLeft, ovalBottom, ovalRight);
    canvas.drawOval(oval, mOvalPaint);
    canvas.drawArc(oval, 0, 270, false, mArcPaint);
}
  

Ответ №1:

point Вы имеете в виду верхний левый угол прямоугольника, включая ваш овал.
Который (совершенно очевидно) не является частью окружности овала.

Если вы хотите центрировать свой овал в этой точке, вам следует переместить начало координат на -50x и -50y
(требуется смещение на -50, потому что ваш овал имеет размеры 100 Вт на 100 ч):

 oval.set(ovalTop - 50, ovalLeft - 50, ovalBottom, ovalRight);
  

Комментарии:

1. Спасибо, теперь я разобрался.