Подтвердить что ты не робот

Понимание того, как на самом деле drawRect или рисование координат работают в Android

Я пытаюсь нарисовать прямоугольник над холстом, и я столкнулся с проблемами, чтобы понять глубину рисования прямоугольника Android. Я читал учебники и все возможное, но я застрял.

Здесь, на изображении, красный прямоугольник - моя цель. enter image description here

Независимо от любого размера прямоугольника мне нужно нарисовать красный прямоугольник над основанием и в середине прямоугольника. Худший кошмар, с которым я столкнулся, - это понимание координат X, Y Width и Height.

Может кто-нибудь объяснить, как работает эта математика, когда-то мы идем вверх, Y достигает очень маленьких, но одинаковых координат ширины выше. И я не могу правильно оправдать красный внутренний прямоугольник. На каком-то экране он хорошо работает, а в другом он терпит неудачу. Красный прямоугольник иногда выходит из родительского прямоугольника.

Повестка дня - понять, как работают координаты и обеспечить целостность внутреннего красного прямоугольника

Будет полезно получить объяснение, основанное на примере. Я использую -

void drawRect(float left, float top, float right, float bottom, Paint paint)

для рисования прямоугольника

4b9b3361

Ответ 1

X выполняется горизонтально, слева направо. Y работает вертикально, сверху вниз. Это точно так же, как и на вашей графике. Итак, (0/0) находится в левом верхнем углу.

Когда вы идете "вверх", Y, конечно, будет меньше, так как он растет сверху донизу.

Вы должны обратить внимание на создание элементов, таких как ListViews, это даст частичный (или новый, вы не можете сказать) холст для ваших просмотров, которые нарисованы. Эти представления будут иметь 0x0 в собственную верхнюю/левую позицию. Если вам нужен абсолют, вы должны впоследствии вызвать View.getLocationOnScreen() и рассчитать смещения самостоятельно.

Ответ 2

canvas.drawRect(left,top,right,bottom,paint);

В этом

  • left: расстояние слева от прямоугольника слева от холст.

  • top: Расстояние нижней стороны прямоугольника от верхней стороны холст

  • справа: расстояние справа от прямоугольника с левой стороны холст.
  • bottom: Расстояние верхней стороны прямоугольника с верхней стороны холста.

Ответ 3

Это будет иметь смысл.

float left = 100, top = 100; // basically (X1, Y1)

float right = left + 100; // width (distance from X1 to X2)
float bottom = top + 100; // height (distance from Y1 to Y2)

Таким образом,

RectF myRectum = new RectF(left, top, right, bottom);
canvas.drawRect(myRectum, myPaint);