Làm thế nào để xoay và thay đổi kích thước hình ảnh bằng PyGame?

Category: Pygame

Trong bài viết này, chúng ta sẽ tìm hiểu cách Xoay và Thu phóng hình ảnh. Thu phóng hình ảnh là việc thay đổi kích thước của hình ảnh gốc, còn Xoay hình ảnh là việc tắt hình ảnh theo một góc nhất định. Phép quay trên mặt phẳng tọa độ được thực hiện ngược chiều kim đồng hồ. Hãy cùng tìm hiểu các phương thức được sử dụng và mã lệnh đầy đủ để thực hiện các tác vụ này.

Thu nhỏ hình ảnh

Để thay đổi tỷ lệ hình ảnh, chúng ta sử dụng phương thức pygame.transform.scale(image, DEFAULT_IMAGE_SIZE) trong đó chúng ta truyền hình ảnh mà chúng ta sẽ thay đổi tỷ lệ và kích thước hình ảnh mặc định mà chúng ta sẽ đặt thủ công theo nhu cầu của mình. 

Ví dụ:

Hình ảnh được sử dụng:

# Import thư viện pygame
import pygame

# Khởi tạo pygame
pygame.init()

# Thiết lập kích thước cửa sổ
size = width, height = 600, 600
screen = pygame.display.set_mode(size)

# Đồng hồ (dùng để giới hạn tốc độ khung hình)
clock = pygame.time.Clock()

# Tải hình ảnh
image = pygame.image.load('gfg.png')

# Thiết lập kích thước mặc định cho ảnh
DEFAULT_IMAGE_SIZE = (200, 200)

# Thay đổi kích thước ảnh theo kích thước mong muốn
image = pygame.transform.scale(image, DEFAULT_IMAGE_SIZE)

# Thiết lập vị trí mặc định để hiển thị ảnh
DEFAULT_IMAGE_POSITION = (200, 200)

# Điều kiện chạy vòng lặp
running = False

# Vòng lặp sự kiện
while not running:

    # Sự kiện đóng cửa sổ
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = True

    # Màu nền của cửa sổ (đen)
    screen.fill((0, 0, 0))

    # Hiển thị hình ảnh lên màn hình
    screen.blit(image, DEFAULT_IMAGE_POSITION)

    # Cập nhật nội dung hiển thị và giới hạn FPS
    pygame.display.flip()
    clock.tick(30)

Đầu ra:

Xoay hình ảnh

Để xoay hình ảnh, chúng ta sử dụng phương thức pygame.transform.rotate(image, degree) trong đó chúng ta truyền vào hình ảnh mà chúng ta sẽ xoay và mức độ xoay sẽ được thực hiện. 

Ví dụ:

# Import thư viện pygame
import pygame

# Khởi tạo pygame
pygame.init()

# Thiết lập kích thước cửa sổ
size = width, height = 600, 600
screen = pygame.display.set_mode(size)

# Đồng hồ (để giới hạn tốc độ khung hình)
clock = pygame.time.Clock()

# Tải ảnh
image = pygame.image.load('gfg.png')

# Thiết lập kích thước cho ảnh (nếu cần)
DEFAULT_IMAGE_SIZE = (200, 200)

# (Tùy chọn) Bạn có thể scale ảnh nếu cần, ví dụ:
# image = pygame.transform.scale(image, DEFAULT_IMAGE_SIZE)

# Xoay ảnh 180 độ
image = pygame.transform.rotate(image, 180)

# Vị trí mặc định để hiển thị ảnh
DEFAULT_IMAGE_POSITION = (200, 200)

# Điều kiện chạy vòng lặp (cần sửa lại)
running = False

# Vòng lặp sự kiện
while not running:  # ⚠️ Câu này gây hiểu nhầm, vì `not running` là `True` => chạy 1 lần rồi thoát

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = True

    # Tô màu nền đen cho màn hình
    screen.fill((0, 0, 0))

    # Vẽ ảnh đã xoay lên màn hình
    screen.blit(image, DEFAULT_IMAGE_POSITION)

    # Cập nhật màn hình
    pygame.display.flip()

    # Giới hạn tốc độ khung hình 30 FPS
    clock.tick(30)

Đầu ra:

Xoay và thay đổi kích thước hình ảnh

Hãy cùng xem cách thực hiện việc điều chỉnh tỷ lệ và xoay hình ảnh cho sẵn. Chúng ta sẽ thiết lập kích thước hình ảnh mặc định phù hợp và vị trí hình ảnh mặc định mà chúng ta muốn hiển thị trên màn hình cửa sổ. Các phương pháp tương tự đã được giải thích ở trên sẽ được sử dụng để điều chỉnh tỷ lệ và xoay hình ảnh. 

Ví dụ:

# Import thư viện pygame
import pygame

# Khởi tạo pygame
pygame.init()

# Thiết lập kích thước cửa sổ
size = width, height = 600, 600
screen = pygame.display.set_mode(size)

# Đồng hồ để điều chỉnh tốc độ khung hình
clock = pygame.time.Clock()

# Tải ảnh từ file
image = pygame.image.load('gfg.png')

# Thiết lập kích thước mặc định cho ảnh
DEFAULT_IMAGE_SIZE = (200, 200)

# Thay đổi kích thước ảnh theo kích thước mong muốn
image = pygame.transform.scale(image, DEFAULT_IMAGE_SIZE)

# Xoay ảnh theo một góc bất kỳ (ở đây là 90 độ)
image = pygame.transform.rotate(image, 90)

# Vị trí mặc định để hiển thị ảnh trên màn hình
DEFAULT_IMAGE_POSITION = (200, 200)

# Cờ điều kiện để điều khiển vòng lặp
running = False

# Vòng lặp sự kiện
while not running:

    # Duyệt qua các sự kiện
    for event in pygame.event.get():
        # Nếu người dùng đóng cửa sổ
        if event.type == pygame.QUIT:
            running = True

    # Tô màu nền đen cho cửa sổ
    screen.fill((0, 0, 0))

    # Vẽ ảnh đã xoay lên màn hình tại vị trí đã định
    screen.blit(image, DEFAULT_IMAGE_POSITION)

    # Cập nhật nội dung cửa sổ sau mỗi khung hình
    pygame.display.flip()

    # Giới hạn tốc độ khung hình (30 khung hình/giây)
    clock.tick(30)

Đầu ra:

Published on Jul 28, 2025

Related Posts