2016-04-03 25 views
1

Pygame'de görünmez bir Renk tanımlamanın herhangi bir yolu var mıdır, böylece screen.fill(invisibleColor,pygame.mouse.get_pos()) numaralı telefondan arama yapmak arkasındaki çizimleri kapsamıyor mu?Pygame görünmez Renk

+0

Bir RBGA rengini% 100 şeffaflıkla kullanabilirsiniz. – Oisin

+0

Şeffaflığı% 100 nasıl yapabilirim? (255,255,255,255) (alpha argümanı ile) gibi renkleri kullanmak, 255'in – amirteymuri

+0

Alpha'sunun tamamen opak olmadığını (255,255,255,0) yardımcı olmaz mı? – SteJ

cevap

2

Python'da saydamlık için üç farklı yöntem vardır; The documentation for fill'a bakmak, kullandığınız saydamlık yöntemini desteklemek için özel bayrakları son parametreye aktarmanız gerekecek gibi görünüyor.

Yararlı bulduğum şey, yüzeylerimde convert yerine convert_alpha() işlevini Documented here kullanmaktı; Benim durumumda, saydamlığın işe yaramadığını keşfettim çünkü düzenli olarak convert kullanıyordum.

EK:

Sana ulaşmak için çalışıyoruz ne% 100 net değilim, ama size görünür olmasını fare altında sadece bir dikdörtgen istiyorum anlamına gelebilir diye düşündüğüm oluyor ve kullanmak demek Bunu yapmak için şeffaflık. Bu durumda sorunların bir çift vardır:

  • şeffaf renk Sadece bu - şeffaf - Mevcut satılan dikdörtgen üzerine çizim size şeffaf renkte aracılığıyla bu katı dikdörtgen görmenizi sağlar; diğer bir deyişle, ilk olarak
  • çizilen dikdörtgenin olmaması ile tamamen aynı olacaktır. Tüm bir ekranı çizecek ve sonra onu kaplayacaksınız; Bu yavaş olacaktır.

Bu, elde etmeye çalıştığınız şey buysa, yalnızca daha küçük bir yüzey oluşturmak (fare altında olan bit) oluşturmak ve bunu arka planınızın üzerine çizmeniz daha iyi olabilir.

gerçekten farenin altında bir delik olan bir katı dikdörtgen çizmek istiyoruz yoksa (ASCII sanat için üzgün) böyle dört dikdörtgenler çizmek gerekir:

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

Bu şekilde biraz fare altında ekran ('diyagram' içinde m işaretli) düz renk tarafından kaplanmayacak, ancak dikdörtgenler 1,2,3 & 4 hepsi bir katı dikdörtgen (fare altında bir delik ile) olarak görünecektir.

Bu sorunun cevabını ihtiyaçlarınıza göre düzeltmeye yardımcı olacağını umarız.

+0

'convert' ve' convert_alpha' 'Surface' nesnesinde çalışır. Bir "Rect" çiziminde kullanmak için saydam bir renge sahip olmak istersek (örneğin, pygame.draw.rect (screen, COLOR, pygame.Rect) ')? – amirteymuri

+1

Saydam bir dikdörtgenin çizimi, dikdörtgenin ilk sırada çizilmemesiyle tamamen aynıdır; Bu bir hesaplama kaybıdır (ve alabileceğim bir oyunun her bir parçasını sıkmaya çalışacağım). Yarı saydam (yani alfa> 0) olmasını mı istiyorsun? – SteJ