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

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

Другие вопросы по тегам