Ինչպե՞ս օգտագործել մկնիկը PyGame-ում պատկերը չափավորելու և պտտելու համար:


Pygame-ը հզոր գրադարան է Python-ում 2D խաղեր և գրաֆիկական հավելվածներ ստեղծելու համար: Այն ապահովում է գործառույթների լայն շրջանակ, ներառյալ պատկերները մանիպուլյացիայի ենթարկելու և փոխակերպելու հնարավորությունը: Այս հոդվածում մենք կուսումնասիրենք, թե ինչպես օգտագործել մկնիկը Pygame-ում պատկերը չափելու և պտտելու համար:

Նախադրյալներ

Նախքան պատկերների մասշտաբավորման և պտտման գործընթացը հասկանալը, կարևոր է ունենալ հիմնական պատկերացում Pygame-ի և իրադարձությունների մշակման մեխանիզմի մասին: Նաև համոզվեք, որ Pygame-ը տեղադրված է ձեր Python միջավայրում: Դուք կարող եք տեղադրել այն՝ օգտագործելով pip հրամանով


pip install pygame

Pygame պատուհանի կարգավորում

Սկսելու համար եկեք ստեղծենք Pygame պատուհան, որը կցուցադրի մեր պատկերը և կկառավարի մկնիկի իրադարձությունները: մենք կարող ենք սկսել Pygame մոդուլների ներմուծմամբ


import pygame
import sys

Նախաձեռնեք Pygame-ը և ստեղծեք հատուկ լայնությամբ և բարձրությամբ պատուհան

Մենք սահմանել ենք լայնության և բարձրության փոփոխականները համապատասխանաբար 800 և 600, բայց ազատ զգալ հարմարեցնել այս արժեքները՝ ձեր կարիքներին համապատասխան: Այժմ մենք պետք է կարգավորենք խաղի հիմնական հանգույցը, որը շարունակաբար կթարմացնի պատուհանը.


while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

Խաղի հանգույցը բաց է պահում պատուհանը, մինչև օգտագործողը փակի այն՝ սեղմելով փակման կոճակը: Եթե օգտագործողը սեղմում է փակման կոճակը, մենք դուրս ենք գալիս ծրագրից՝ զանգահարելով pygame.quit() և sys.exit():

Պատկերի բեռնում և ցուցադրում

Պատկերը բեռնելու և ցուցադրելու համար մենք պետք է այն ներմուծենք մեր Pygame ծրագրի մեջ: Տեղադրեք պատկերի ֆայլը նույն գրացուցակում, ինչ ձեր Python սկրիպտը: Այս օրինակի համար ենթադրենք, որ պատկերի ֆայլը կոչվում է «image.png»: Մենք կարող ենք բեռնել և ցուցադրել պատկերը՝ օգտագործելով հետևյալ կոդը.

pygame.image.load() ֆունկցիան բեռնում է պատկերի ֆայլը, իսկ image.get_rect() վերադարձնում է ուղղանկյուն օբյեկտ, որը ներկայացնում է պատկերի չափերն ու դիրքը: Մենք օգտագործում ենք screen.blit() ֆունկցիան` պատկերը էկրանի մակերեսին նկարելու համար: Վերջապես, pygame.display.flip()-ը թարմացնում է էկրանը՝ պատկերը ցուցադրելու համար:


image = pygame.image.load("image.png")
image_rect = image.get_rect()
screen.blit(image, image_rect)
pygame.display.flip()

Պատկերի մասշտաբավորում

Այժմ մեր պատկերը ցուցադրելուց հետո եկեք անցնենք մկնիկի միջոցով դրա մասշտաբավորմանը: Մենք կօգտագործենք մկնիկի ոլորման անիվը, որպեսզի վերահսկենք մասշտաբի գործակիցը:

Օրինակ

Ստորև բերված օրինակում մենք օգտագործեցինք scale_factor փոփոխականը, որպեսզի հետևենք պատկերի մասշտաբին: Երբ մկնիկի ոլորման անիվը ոլորվում է վերև (event.button == 4), մենք մեծացնում ենք scale_factor-ը 0.1-ով: Եվ հակառակը, երբ ոլորման անիվը ոլորվում է ներքև (իրադարձություն. կոճակ == 5), մենք նվազեցնում ենք scale_factor-ը 0.1-ով:

Այնուհետև մենք օգտագործում ենք pygame.transform.scale() ֆունկցիան՝ սկզբնական պատկերը չափափոխելու համար՝ հիմնված scale_factor-ի վրա: Սանդղակավորված պատկերի լայնությունը և բարձրությունը հաշվարկվում են սկզբնական չափերը scale_factor-ով բազմապատկելով:

scaled_image_rect-ը թարմացվում է՝ ապահովելու համար, որ պատկերը մնում է կենտրոնացված մասշտաբից հետո: Մենք մաքրում ենք էկրանը՝ օգտագործելով screen.fill((0, 0, 0))՝ նախորդ պատկերը հեռացնելու համար, այնուհետև նկարում ենք մասշտաբային պատկերը՝ օգտագործելով screen.blit():


import pygame
import sys

# Initialize Pygame
pygame.init()

# Set up the Pygame window
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Image Scaling Demo")

# Load and display the image
image = pygame.image.load("image.png")
image_rect = image.get_rect()
screen.blit(image, image_rect)
pygame.display.flip()

# Set up scaling variables
scale_factor = 1.0

# Game loop
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 4:  # Scrolling up
                scale_factor += 0.1
            elif event.button == 5:  # Scrolling down
                scale_factor -= 0.1

    scaled_image = pygame.transform.scale(
        image, (int(image_rect.width * scale_factor), int(image_rect.height * scale_factor))
    )
    scaled_image_rect = scaled_image.get_rect(center=image_rect.center)

    screen.fill((0, 0, 0))  # Clear the screen
    screen.blit(scaled_image, scaled_image_rect)
    pygame.display.flip()

Արդյունք

Նշում. Երբ մենք գործարկում ենք այս կոդը, այն կցուցադրի պատկերը Pygame-ի պատուհանում: Դուք կարող եք օգտագործել մկնիկի ոլորման անիվը՝ պատկերը վեր ու վար չափավորելու համար: Վերև ոլորելը սանդղակը մեծացնում է 0,1-ով, իսկ ներքև ոլորելով՝ սանդղակը 0,1-ով: Մեծածավալ պատկերը շարունակաբար կթարմացվի և կցուցադրվի Pygame պատուհանում:

Պատկերի պտտում

Այժմ, եկեք իրականացնենք պտտման գործառույթը՝ օգտագործելով մկնիկը: Պտտման անկյունը կառավարելու համար մենք կօգտագործենք մկնիկի շարժումը:

Օրինակ

Ստորև բերված օրինակում մենք օգտագործեցինք rotation_angle փոփոխական՝ հետևելու պատկերի պտույտին: Երբ մկնիկը տեղափոխվում է ձախ կոճակը սեղմելիս (event.type == pygame. MOUSEMOTION և pygame.mouse.get_pressed()[0]), մենք կարգավորում ենք պտտման_անկյունը՝ հիմնվելով x-coordinate-ի հարաբերական շարժման վրա (event.rel[: 0]): Այն 10-ի բաժանելը ապահովում է պտտման ավելի հարթ փորձ:

pygame.transform.rotate() ֆունկցիան օգտագործվում է մասշտաբային պատկերը պտտելու համար՝ հիմնված rotation_ang-ի վրա: Ինչպես մասշտաբավորմանը, մենք թարմացնում ենք rotated_image_rect-ը, որպեսզի պատկերը պտտվելուց հետո կենտրոնացած լինի:


import pygame
import sys

# Initialize Pygame
pygame.init()

# Set up the Pygame window
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Image Rotation Demo")

# Load and display the image
image = pygame.image.load("image.png")
image_rect = image.get_rect()
screen.blit(image, image_rect)
pygame.display.flip()

# Set up rotation variables
rotation_angle = 0.0

# Game loop
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 4:  # Scrolling up
                rotation_angle += 10
            elif event.button == 5:  # Scrolling down
                rotation_angle -= 10

    rotated_image = pygame.transform.rotate(image, rotation_angle)
    rotated_image_rect = rotated_image.get_rect(center=image_rect.center)

    screen.fill((0, 0, 0))  # Clear the screen
    screen.blit(rotated_image, rotated_image_rect)
    pygame.display.flip()

Արդյունք

Եզրակացություն

Այս հոդվածում մենք քննարկեցինք, թե ինչպես օգտագործել մկնիկը Pygame-ում պատկերը չափելու և պտտելու համար: Օգտագործելով մկնիկի ոլորման անիվը, մենք կարող ենք դինամիկ կերպով կարգավորել մասշտաբի գործակիցը և իրական ժամանակում ականատես լինել պատկերի փոխակերպմանը: Նմանապես, հետևելով մկնիկի շարժումներին և սեղմումներին՝ մենք կարող ենք առանց ջանքերի պտտել պատկերը՝ ապահովելով ինտերակտիվ և գրավիչ օգտատերերի փորձ: