2016-04-03 72 views
1

有沒有什麼辦法可以在pygame中定義一個隱形顏色,這樣在screen.fill(invisibleColor,pygame.mouse.get_pos())上調用它就不會覆蓋它後面的圖紙?Pygame隱形顏色

+0

您可以嘗試使用透明度爲100%的RBGA顏色。 – Oisin

+0

我如何使透明度達到100%?使用像(255,255,255,255)這樣的顏色(使用alpha參數)無助於 – amirteymuri

+0

255的Alpha是完全不透明的 - 試試(255,255,255,0)而不是? – SteJ

回答

2

在Python中有三種不同的透明度方法;看着The documentation for fill它看起來像你需要將特殊標誌傳遞到最後一個參數來支持你正在使用的透明度方法。

我發現有用的是在我的表面上使用convert_alpha()函數Documented here而不是convert;我發現在我的情況下,透明度不起作用,因爲我使用的是常規的convert

補充:

我不是你想達到什麼樣的100%清楚,但它發生,我認爲你可能意味着你想要的鼠標下只有一個矩形是可見的,你的意思是使用透明度來做到這一點。如果是這種情況,有幾個問題:

  • 透明顏色就是這樣 - 透明 - 在現有的已售出的矩形上繪製它將允許您通過透明顏色看到實心矩形;換句話說,它將與沒有首先繪製該矩形的完全相同
  • 您將繪製整個屏幕然後覆蓋它;這會很慢。

如果這是你想要實現的,你可能會做得更好,只渲染一個更小的表面(位於鼠標下方的位)並將其繪製到固定背景上的屏幕上。

如果你確實想用鼠標畫下一個洞了堅實的矩形,你將需要繪製四個矩形像這樣(遺憾的ASCII藝術):

+------------------+ 
|  1   | 
+------+---+-------+ 
| 2 | m | 3 | 
+------+---+-------+ 
|  4   | 
+------------------+ 

這樣的位('圖'中標記爲m)將不會被純色覆蓋,但矩形1,2,3都會顯示爲一個實心矩形(鼠標下面有一個孔)。

希望這有助於完善答案以滿足您的需求。

+0

轉換'和'convert_alpha'在'Surface'對象上工作。如果我想繪製一個'Rect'(例如在'pygame.draw.rect(screen,COLOR,pygame.Rect)')中使用透明顏色,該怎麼辦? – amirteymuri

+1

繪製一個透明的矩形與第一個繪製矩形完全一樣;這是浪費計算(我會試圖從pygame中擠出所有性能)。你的意思是你想要它是半透明的(即一個alpha> 0)? – SteJ