2D зум, масштаб и перевод - PullRequest
0 голосов
/ 29 ноября 2011

Я пытаюсь создать метод изменения масштаба растрового изображения (с помощью Pinch Zoom), а затем центрировать его на экране. Но всякий раз, когда я уменьшаю масштаб, он уменьшается в левом верхнем углу, а когда я увеличиваю, он увеличивается в нижнем правом углу:

 public void ZoomIn() {
        TileMap.TileSize += 2;

        Position.x += 1;
        Position.y += 1;
    }

Я попытался сместить его, сместив позицию спрайта, но он не работает. Я не знаю соотношение.

Как вы масштабируете спрайт (растровое изображение) и оставляете его в той же позиции на экране (я думаю, вырастаете из центра)?

1 Ответ

0 голосов
/ 29 ноября 2011

Рассмотрим вертикально, а затем горизонтально.

Если ширина растрового изображения изменяется на +10 пикселей, то для центрирования по горизонтали в том же месте необходимо сместить его положение на -5 пикселей.

То же самое для высоты. Сохраните предыдущее значение и текущее значение, рассчитайте разницу, сдвиньте вправо на floor(widthDiff / 2) и сдвиньте вверх на floor(heightDiff / 2).

...