Ik ben een beginner in Python en ik ben niet duidelijk over de functie surface.blit()
. Wat doet het? Hoe werkt het?
Ik heb de volgende punten tegengekomen over hoe u het kunt maken.
- Maak een canvas van de gewenste grootte
- Maak een oppervlak van kleinere afmeting die het object bevat dat moet worden weergegeven.
- Definieer de rect-waarde van het oppervlak.
- Blit (overlap) het oppervlak op het canvas op de juiste positie
Syntaxis: canvas.blit(surface, surfacerect)
Waarom is alleen rect gebruikt? Kan het een andere vorm zijn?
Antwoord 1, Autoriteit 100%
Dit in reële termen kan helpen, hoewel, hoewel zo eenvoudig mogelijk – & GT; Blitting is tekening
Ga door elk van de stappen die u hebt genoemd:
- Maak een canvas van een gewenste maat
Dit is ons venster, gemaakt door screen = pygame.display.set_mode((width,height))
. Waar screen
is de canvasnaam. Uiteindelijk moet alles op dit canvas worden getrokken, zodat we het kunnen zien.
- Maak een oppervlak van kleinere afmeting met het object dat moet worden weergegeven
Dit is een oppervlak dat we zullen vullen met objecten zoals afbeeldingen. Het hoeft niet kleiner te zijn dan de raamgrootte en het kan vrij worden verplaatst.
- Definieer een rect-waarde van het oppervlak
Wanneer u een oppervlak maakt met iets als background = pygame.Surface((width,height))
U geeft het formaat op. De afbeeldingen of getekende items op het oppervlak kunnen elke vorm of grootte zijn, maar ze moeten allemaal worden opgenomen binnen de grenzen die zijn ingesteld door deze breedte en hoogte.
- Blit (overlap) het oppervlak op het canvas op de juiste positie
Nu het allerbelangrijkste. We moeten dit oppervlak (achtergrond) pakken en op het raam tekenen. Om dit te doen noemen we screen.blit(background,(x,y))
waarbij (x,y) de positie in het venster is waar we de linkerbovenhoek van het oppervlak willen hebben. Deze functie zegt: neem het achtergrondoppervlak en teken het op het scherm en plaats het op (x,y).
Een eenvoudig voorbeeld:
import pygame
pygame.init()
#### Create a canvas on which to display everything ####
window = (400,400)
screen = pygame.display.set_mode(window)
#### Create a canvas on which to display everything ####
#### Create a surface with the same size as the window ####
background = pygame.Surface(window)
#### Create a surface with the same size as the window ####
#### Populate the surface with objects to be displayed ####
pygame.draw.rect(background,(0,255,255),(20,20,40,40))
pygame.draw.rect(background,(255,0,255),(120,120,50,50))
#### Populate the surface with objects to be displayed ####
#### Blit the surface onto the canvas ####
screen.blit(background,(0,0))
#### Blit the surface onto the canvas ####
#### Update the the display and wait ####
pygame.display.flip()
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
#### Update the the display and wait ####
pygame.quit()