web-dev-qa-db-ja.com

pygameのsurface.blit()関数とは何ですか?それは何をするためのものか?それはどのように機能しますか?

私はPython=の初心者であり、関数surface.blit()について明確ではありません。それは何をしますか?それはどのように機能しますか?

作り方については、以下の点に気づきました。

  • 目的のサイズのキャンバスを作成する
  • 表示するオブジェクトを含む、より小さいサイズのサーフェスを作成します。
  • サーフェスのRect値を定義します。
  • キャンバス上のサーフェスを正しい位置でブリット(オーバーラップ)します。

構文:canvas.blit(surface, surfacerect)

rectのみを使用するのはなぜですか?それは他の形状にすることができますか?

7

できるだけ簡単に記述しますが、これを実際の用語で表すと役立つ場合があります-> ブリッティングは描画中

あなたが言及した各ステップを通過する:

  • 目的のサイズのキャンバスを作成する

これは、screen = pygame.display.set_mode((width,height))によって作成されたウィンドウです。ここで、screenはキャンバス名です。最終的には、すべてをこのキャンバスに描画して、表示できるようにする必要があります。

  • 表示するオブジェクトを含む小さいサイズのサーフェスを作成します

これは、画像などのオブジェクトを入力する表面です。ウィンドウサイズより小さくする必要はなく、自由に移動できます。

  • サーフェスのRect値を定義します

background = pygame.Surface((width,height))のようなものを使用してサーフェスを作成するときは、そのサイズを指定します。サーフェス上の画像または描画されたアイテムは、任意の形状またはサイズにすることができますが、これらはすべて、この幅と高さによって設定された境界内に含まれている必要があります。

  • キャンバス上の表面を正しい位置でブリット(オーバーラップ)します。

今、すべての重要なビットです。この表面(背景)を取得し、それをウィンドウに描画する必要があります。これを行うには、screen.blit(background,(x,y))を呼び出します。ここで、(x、y)は、ウィンドウの内側の左上に配置する位置です。この関数は、バックグラウンドサーフェスを取得して画面に描画し、(x、y)に配置することを示しています。

簡単な例:

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()
8
DCA-