Android: рисование на холсте, способ сделать так, чтобы нижний левый угол соответствовал (0,0)? - PullRequest
5 голосов
/ 13 июля 2011

Я пытаюсь написать класс графиков, который я могу использовать в Android (я знаю, что готовые классы существуют), но преобразование всех моих координат будет проблематичным.Есть ли простой способ заставить координаты экрана начинаться слева внизу?

Ответы [ 4 ]

10 голосов
/ 13 июля 2011

Нет, я не знаю, как переместить 0,0 в нижний левый угол и получить то, что вы обычно считаете "нормальными" координатами.

Но сочетание scale() и translate() может помочь добиться того же эффекта.

canvas.translate(0,canvas.getHeight());   // reset where 0,0 is located
canvas.scale(1,-1);    // invert
1 голос
/ 13 июля 2011

Вы можете перевернуть ваш холст чем-то вроде canvas.scale(1, -1) и затем перевести его в нужное место.

0 голосов
/ 07 декабря 2018

холст андроида имеет начало слева вверху. Вы хотите перевести это внизу справа. Для этого перевода вычтите координату y из высоты холста.

float X1 = xStart;
float Y1 = canvas.getHeight() - yStart;  //canvas is a Canvas object
float X2 = xEnd;
float Y2 = canvas.getHeight() - yEnd;
canvas.drawLine(X1, Y1, X2, Y2, paint ); //paint is a Paint object

Это должно привести к тому, что ваша строка начинается с нижнего левого угла.

0 голосов
/ 13 июля 2011

Вы можете использовать canvas.translate() http://developer.android.com/reference/android/graphics/Canvas.html#translate(float, float) , чтобы переместить начало координат туда, куда вы хотите.

...