2016-04-20 23 views
0

我目前正在在pygame的遊戲,Python 3中,並已給我的問題的代碼的一部分:通過pygame的rotozoom保持透明像素,Python的3

for counter in range(0, 30): 
       particles = pygame.image.load('particles.png').convert() 
       particles = pygame.transform.rotozoom(particles, 36*counter, 1.1**counter).convert()     
       particles.set_colorkey((0, 0, 0, 0)) 
       screen.blit(particles, particles.get_rect(centerx=480, centery=100))     
       pygame.display.flip()     
       time.sleep(0.05) 

particles.png是隻有透明背景上的幾個彩色像素。問題是,當圖像旋轉和縮放時,其中一些粒子會模糊,導致周圍有大量黑色方塊。

我該如何解決這個問題?提前致謝!!

+1

是關於模糊或透明像素的問題嗎?如果是關於保留透明像素,只需在第3行執行'convert_alpha()'而不是'convert'。如果是關於模糊像素,我不確定是什麼導致了它。 – DJMcMayhem

回答

1

我對pygame的rotozoom與透明度相結合的體驗不好。相反,加載圖像,然後rotozooming吧,考慮以下因素:

  • 使用PIL庫:

    1. 轉換的負載表面使用pygame.image.tostring
    2. 將字符串的字符串到圖像對象
    3. 使用PIL的函數來替換rotozoom(zoomingrotating
    4. 將Image對象轉換回surfa使用相同的方法
  • 使用數學CE:

    1. 關於粒子的位置和顏色加載數據, 或從裝載表面推斷它
    2. 使用簡單的數學函數來caculate其新位置, 根據角度和縮放
    3. 使用pygame.gfxdraw,pygame.draw或油漆他們pygame.Surface.set_at

祝你好運!

+0

我寧願使用PIL庫,但我不熟悉可以代替rotozoom的函數。你能舉個例子嗎? –

+0

@VladimirShevyakov當然,我添加鏈接到答案 –

+0

這是否幫助你? –

相關問題