Wat is de functie van het oppervlak.blit () in Pygame? Wat doet het? Hoe werkt het?

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 screenis 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()

Other episodes