pygame.transform.scale()
не масштабирует саму поверхность ввода. Создает новую поверхность и масштабирует «блиц» на новой поверхности. Новая поверхность возвращается возвращаемым значением:
pygame.transform.scale()
делает:
- Создает новую поверхность (
newSurface
) с размером (width, height)
. - Масштабирование и копирование
Surface
в newSurface
. - Возврат
newSurface
.
Поверхность назначения - pygame.Surface
, где масштабированная поверхность копируется в. Это быстрее, потому что память для Surface не должна быть выделена.
Она установлена DestSurface
, затем pygame.transform.scale()
делает:
- Масштабирование и копирование
Surface
DestSurface
. - Возврат
DestSurface
.
По этой причине размер DestSurface
должен быть (width, height)
, формат DestSurface
имеет такой же, как и формат Surface
.
Возможный вариант использования: вам нужно постоянно масштабировать что-то до фиксированного размера в основном приложении l oop (например, если поверхность динамически генерируется). Далее предполагается, что surf
является поверхностным объектом:
while True:
# [...]
scaledSurf = pygame.transform.scale(surf, (100, 100))
window.blit(scaledSurf, (x, y)
Код можно улучшить с помощью параметра DestSurface
:
scaledSurf = pygame.Surface((100, 100))
while True:
# [...]
pygame.transform.scale(surf, (100, 100), scaledSurf)
window.blit(scaledSurf, (x, y)
Это, вероятно, редкий дело. В общем, вы должны пытаться масштабировать поверхности при инициализации, а не непрерывно в приложении l oop и использовать масштабированные поверхности в l oop.
Не пытайтесь использовать параметр принудительно и не «создавайте» сценарий использования для параметра DestSurface
. Сделай это наоборот. Напишите ваше приложение и заставьте его работать. Затем выясните, может ли параметр DestSurface
улучшить ваш конкретный c вариант использования.