Масштабирование холста 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);
Извините мой плохой английский и объяснение, но я хочу спросить вкратце;
каков истинный предел ширины / высоты для перевода после масштабирования для перемещения холста?
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