2

pygame に 200x200px の画像があり、半分にスライスしたいので、2 つの形状は 100x200px になります。その後、画面上の 2 つの新しい画像を、その間に一定量のピクセルを置いてブリットしたいと思います。このような方法で画像を分割/トリミングするにはどうすればよいですか?

編集 - 修正!pygame.transform.chop()と を使用して、自分でこれを理解することができましたpygame.transform.rotate()。しかし、助けてくれてありがとう。Tankor Smash のおかげで、もう少し詳しく知ることができました。

4

3 に答える 3

6

2 つのイメージを作成する必要はありません。1 つを使用して 2 回ブリットするだけです。

origin1 = (0,0)
separation = 20

# Load the image
img = pygame.image.load(image_path)

width, height = img.get_width()/2, img.get_height()
origin2 = origin1[0] + width + separation, origin1[1]

# Blit first half
source_area = pygame.Rect((0,0), (width, height))
screen.blit(img, origin1, source_area)

# Blit second half
source_area = pygame.Rect((width,0), (width, height))
screen.blit(img, origin2, source_area)
于 2012-07-10T19:47:59.613 に答える
1

PILここでhttp://www.pythonware.com/products/pil/を使用する方が良いと思います

しかし、Pygame を使用する場合は、イメージを含むサーフェスを作成し、サーフェスの半分を画面の一部にブリットし、残りの半分を別の部分にブリットするようなものになります。

#load the image to a surface
img =pygame.image.load(path) 
#create a rect half the width of the image
half_rect = pygame.rect(img.width/2, img.height/2)
#blit first half
main_screen.blit((0,0), rect, img)
#blit second half
main_screen.blit((image.width+10,0),rect, img)

これは疑似コードですが、大まかに言えば、それが私が行う方法です

于 2012-07-10T19:33:10.890 に答える
0

もう 1 つの方法は、http://www.pygame.org/docs/ref/surface.html#Surface.subsurfacesubsurfaceを使用することです。

1 つのシートに多数のスプライトがある場合は、スプライトシートとして使用できます: http://www.pygame.org/wiki/Spritesheet?parent=CookBook

于 2012-07-10T20:44:42.247 に答える