Android: рисование на холсте, способ сделать так, чтобы нижний левый угол соответствовал (0,0)?
Я пытаюсь написать класс графиков, который я могу использовать в Android(я знаю, что предварительно созданные классы существуют), но преобразование всех моих координат было бы затруднительно. Есть ли простой способ сделать так, чтобы координаты экрана начинались слева внизу?
3 ответа
Нет, я не знаю, как двигаться 0,0
внизу слева и получите то, что вы обычно считаете "нормальными" координатами.
Но сочетая scale()
а также translate()
может добиться цели, чтобы добиться того же эффекта.
canvas.translate(0,canvas.getHeight()); // reset where 0,0 is located
canvas.scale(1,-1); // invert
Вы можете перевернуть свой холст с чем-то вроде canvas.scale(1, -1)
а затем перевести его в нужное место.
Ты можешь использовать canvas.translate()
http://developer.android.com/reference/android/graphics/Canvas.html, чтобы переместить источник в нужное вам место.
Андроид холст имеет происхождение в левом верхнем углу. Вы хотите перевести это внизу справа. Чтобы сделать этот перевод, вычтите координату 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
Это должно привести к тому, что ваша строка начнется слева внизу.