Ինչպե՞ս օգտագործել մկնիկը 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-ում պատկերը չափելու և պտտելու համար: Օգտագործելով մկնիկի ոլորման անիվը, մենք կարող ենք դինամիկ կերպով կարգավորել մասշտաբի գործակիցը և իրական ժամանակում ականատես լինել պատկերի փոխակերպմանը: Նմանապես, հետևելով մկնիկի շարժումներին և սեղմումներին՝ մենք կարող ենք առանց ջանքերի պտտել պատկերը՝ ապահովելով ինտերակտիվ և գրավիչ օգտատերերի փորձ: