我在pygame中有一個200x200px的圖像,我想將其切成兩半,因此2個圖形將爲100x200px。之後,我想用屏幕上的一定數量的像素將屏幕上的2個新圖像覆蓋。圖像如何以這種方式分割/裁剪?Pygame中的拆分圖像
編輯 - 修正!我設法通過使用pygame.transform.chop()
和pygame.transform.rotate()
來解決這個問題。不過,感謝您的幫助。我多瞭解Tankor Smash的幫助。
我在pygame中有一個200x200px的圖像,我想將其切成兩半,因此2個圖形將爲100x200px。之後,我想用屏幕上的一定數量的像素將屏幕上的2個新圖像覆蓋。圖像如何以這種方式分割/裁剪?Pygame中的拆分圖像
編輯 - 修正!我設法通過使用pygame.transform.chop()
和pygame.transform.rotate()
來解決這個問題。不過,感謝您的幫助。我多瞭解Tankor Smash的幫助。
我相信你會更好使用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)
現在,這是僞代碼,但是這就是我想要做的,大致
你並不需要創建兩個圖像,只需使用一個位塊傳輸兩次:
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)
正是我在說什麼,但用真實的代碼。 +1 – TankorSmash 2012-07-10 19:58:43
由於某些原因,儘管將目標設置爲4000x4000,blit目標仍在屏幕外。 回溯(最近通話最後一個): 文件 「C:/Users/User/Desktop/test.py」,第24行,在
@ Alpha15,我做了一個小的編輯,也許這是問題,origin2缺少第二個座標:'origin2 = origin1 [0] + width + separation,origin1 [1]' – pmoleri 2012-07-11 13:33:56
另一種方法是使用subsurface
小號http://www.pygame.org/docs/ref/surface.html#Surface.subsurface
如果您有許多精靈在一張紙上,你可以使用它作爲一個spritesheet:http://www.pygame.org/wiki/Spritesheet?parent=CookBook
顯然沒有寬度屬性。 回溯(最近一次調用最後一次): 文件「C:/Users/User/Desktop/test.py」,第11行, half_rect = pygame.Rect(img.width/2,img.height/2 ) AttributeError:'pygame.Surface'對象沒有屬性'width' –
Eric
2012-07-10 20:25:40
你必須做一些學習,但我會認爲完整的代碼是'img.get_rect()。width'。查找搜索條件,Pygame Rect和Pygame表面以獲取更多信息。起初很奇怪,它變得相當簡單。 – TankorSmash 2012-07-10 20:39:06