Масштабирование холста Android, перевод и позиционирование



Я пытаюсь установить предел перемещения после масштабирования с помощью масштаба холста, но новые координаты не совпадают.

моя ширина 480, после 1,5 f масштабирования моя ширина будет 720... но когда я устанавливаю translate на -480, я вижу больше места справа.



float zoom = 0.5f;
PointF translate = new PointF(0, 0);
canvas.scale(zoom, zoom);
canvas.translate(translate.x, translate.y);
//...
canvas.drawRect(0, 0, width, height, paint);


Извините мой плохой английский и объяснение, но я хочу спросить вкратце;

каков истинный предел ширины / высоты для перевода после масштабирования для перемещения холста?

542   2  

2 ответов:

Я решил эту задачу следующим образом;

(разрешение экрана: 800x480 [пейзаж])

int screenWidth = 800;
int gameLimitX = 1600;
int cameraPositionX = 0;

float zoom = 1.0;

if((screenWidth / zoom) + cameraPositionX > gameLimitX) {
    cameraPositionX = (screenWidth / zoom) + cameraPositionX;
}

(Сделайте то же самое для y / height)
Надеюсь, вы меня поймете.

Вы можете сохранить текущий масштаб, а затем умножить переводы следующим образом:

canvas.scale(_factorScale, _factorScale);
int wGameView = (int) (_wGameView/_factorScale);
int hGameView = (int) (_hGameView/_factorScale);
int xCam = (int) (ptCentre.x-(wGameView>>>1));
int yCam = (int) (ptCentre.y-(hGameView>>>1));
//move camera now!
canvas.translate(-xCam,-yCam);
//here goes drawing

Comments

    Ничего не найдено.