#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. Спасибо, теперь я разобрался.