0
A
回答
1
如前所述,在pygame的抽獎功能實際上並沒有摻和你所期望的方式。從PyGame文檔:
大多數參數接受一個RGB三元組的顏色參數。這些也可以接受RGBA四聯體。如果alpha值包含像素alpha,則alpha值將直接寫入Surface,但繪製函數不會透明地繪製。
你可能想要做的事實質上就是Alex Martelli所說的 - 用alpha通道創建一箇中間軟件表面,在你的表面繪製你的形狀,然後blit混合到最終表面。如果您使用過PyGame的字體渲染,請注意,它的工作原理大致相同,只不過Font.render爲您創建了臨時表面。
我有點生鏽Python和pygame的這些天,但這裏有一個簡單的例子是希望沒有太多的錯誤:
# returns a surface with the circle drawn onto it
def render_transparent_circle(color, radius, width=0):
size = radius * 2
temp_surf = pygame.Surface((size, size), SRCALPHA)
temp_surf.fill(Color(0, 0, 0, 0))
pygame.draw.circle(temp_surf, color, (radius, radius), radius, width)
return temp_surf
# draw a half-opaque blue circle of radius 30 to the display at point (50, 100)
def test():
transp_blue = Color(0, 0, 255, 128)
screen = pygame.display.get_surface()
circle = render_transparent_circle(transp_blue, 30)
screen.blit(circle, (50, 100))
附: - 如果要多次顯示相同的形狀,可能需要考慮緩存中間曲面(但不要忘記配置文件以查明是否有幫助)。
1
您可以使用blit以及適當的BLEND_*
值(將形狀保持爲單獨的表面,以進行完整性和編輯,並且只爲了顯示目的將它們佈告)。
0
阿爾法自身只是一個額外的「價值」,可以服務於一個目的。恰恰相反,目的通常是(但並非總是)透明(其他用途包括反射,鏡面高光,甚至是僞裝HDR的方法)。
您需要指定您希望它融合(和公式應該使用這樣做)。一個簡單的谷歌搜索"pygame blend mode"顯示了一些很好的資源。
正如亞歷指出的那樣,位塊傳送需要一個混合模式作爲參數。這個StackOverflow問題提供了更多信息。
相關問題
- 1. 小冊子重疊形狀不透明
- 2. 隱藏透明度的部分形狀?
- 3. 重疊部分透明元素的不透明度
- 4. 在directx中合併重疊的透明形狀
- 5. 繪製不重疊的半透明形狀
- 6. 谷歌地圖API v3重疊形狀不透明限制
- 7. CSS透明形狀
- 8. UIImage透明形狀
- 9. 如果兩個部分不透明的形狀重疊,可以只顯示它們重疊的一個形狀嗎?
- 10. 如何獲得Java中BufferedImage的透明部分的形狀?
- 11. CSS:透明div部分不透明疊加
- 12. 重疊的透明背景
- 13. three.js所:由部分透明的網狀
- 14. KineticJS形狀不透明
- 15. 當形狀部分透明時,如何在Canvas中從另一個形狀(XOR)切出一個形狀?
- 16. UIbutton部分透明?
- 17. JFrame部分透明
- 18. 疊加形狀 - 錯誤的重疊形狀行爲
- 19. Qt中重疊多邊形的透明度
- 20. QGraphicsPathItem重疊半透明的路徑變得更加不透明
- 21. 重疊形狀識別(OpenCV)
- 22. Flex形狀 - 標籤重疊
- 23. 重疊視圖的透明度
- 24. 不重疊的透明控件
- 25. 重疊項目的Flash透明度
- 26. CSS重疊的透明箭頭元素
- 27. ActionScript 3.0中的半透明形狀?
- 28. 過德魯形狀的透明控制
- 29. 透明形狀的繪製陰影
- 30. 實例化形狀內的透明度
問題是,draw。*函數不採用混合模式參數。 – 2009-12-13 16:30:55