2012-05-24 78 views
1

我真的不知道爲什麼這不起作用。旋轉導致圖像不斷地放大和縮小。我環顧四周,沒有找到解決我的問題的辦法。 主要http://tinypaste.com/1c5025fa 模塊http://tinypaste.com/f42f9c58Pygame旋轉導致圖像結局

也有人可以解釋爲什麼這個項目的盒子突然停止轉動? 等'http://tinypaste.com/82b3b30e'(刪除引號,我不允許發佈超過2個超鏈接)

+1

什麼想這個角度__rotate(箱,角角/ 360 * 360)__ – corn3lius

+0

在更新我不斷地增加10的角度發生,所以最終還是會超過360所以角-angle/360 * 360減去不必要的角度。因此它只會旋轉最小量。 – PhoneMicrowave

+0

您使用的是什麼版本的Python?這些角度的代碼只能在版本2中運行(沒有'from __future__ import division')。在Python 3中,角度/ 360通常是一個浮點數,並且最終會取消整個角度,而不僅僅是360的倍數。 – Blckknght

回答

1

從我所知道的,你看到的縮放是一種排序對旋轉操作如何工作的人爲因素。當矩形旋轉時,邊界框必然大於原始矩形。例如,請參閱下面的圖像中的藍色矩形。 R是矩形的半徑...所以當它旋轉時,矩形會掃描第二個圖像中紅色圓圈覆蓋的區域。旋轉的邊框是現在的灰色矩形。 pygame必須填寫紅色區域和灰色區域。 pygame使用什麼顏色填充填充區域?

pygame.transform.rotate文檔說...

「除非90度的增量旋轉,圖像將被填充更大舉行新的大小。如果圖像具有像素阿爾法,填充的區域將是透明的,否則。 pygame會選擇一種與表面顏色或顏色匹配的顏色。「

因此,解決方案是顯式設置圖像的顏色鍵或alpha值(在你的情況下,當你構造你的saved_image表面)。然後,當saved_image旋轉時,新生成的圖像將有填充區域填充了適當的顏色。

給它一個去看看是否有用。

enter image description here

+0

哦,所以我所要做的只是選擇與表面不同的顏色,pygame會照顧其餘的:o。所以self.saved_image.set_colorkey((255,255,255))。謝謝您的幫助。 – PhoneMicrowave