2011-01-10 31 views
10

Eğer bir gölgeyi AÇIK olarak tanımlarsanız, o zaman tuvalin üzerindeki tüm "grafikler" için geçerli olur (bundan sonra yapması gereken şey).html kanvas gölgesi her şeye uygulanıyor

Örnek: http://flanvas.com/development/flanvas/test.html

kimse bunu kullandıktan sonra gölge kapatmak için en iyi uygulamayı biliyor mu? ShadowColor'u "alphaba (0,0,0,0)" olarak ayarlıyorum, ki bu bir alfa olmayan siyah. Eminim daha iyi bir yol var.

Örnek örnek: Metin ayrıca gölge alıyor. Şu an bununla mücadele etmek için alfa olmayan siyahı kullanıyorum. http://flanvas.com/development/flanvas/examples/filters-dropShadowFilter.html

cevap

25

. X & Y burada

ctx.save(); 
ctx.translate(X,Y); 

ctx.shadowColor = 'rgba(255, 0, 0, 0.5)'; 

// do some stuff 

ctx.restore(); 

çizmek amaçlanmaktadır koordinatlar ve size koordinatları 0,0 için eşyalarını göreli yapmak.

Bu yöntem önbelleğe alma sorununu ve önceki stilleri/değerlerini yeniden çözer ve her zaman (0,0)

+1

Mükemmel noktada: Hangi zaten bir 0 alfa siyah ile yaptıklarını)

Bu aradığınız budur. Bu çözüm, daha karmaşık durumlarda gerçekten iyi çalışır (takip etmek için daha az şey). –

5

Genellikle, bu tür "global" özniteliklerin eski değerini değiştirmeden önce saklamak ve daha sonra geri yüklemek için bu saklı değeri kullanmak iyi bir fikirdir. Örnek: Aşağıdaki örneklerle için, stil değişiklikleri hakkında endişelenmeden görevleri gerçekleştirebilirsiniz save, translate ve restore kullanarak

var origShadowColor = ctx.shadowColor; 
ctx.shadowColor = 'rgba(255, 0, 0, 0.5)'; 

// ... do some stuff 

ctx.shadowColor = origShadowColor; 
7

(DÜZENLEME kökenli göre çizilir gibi gradyanlar ile çalışırken de çok yararlıdır: Maalesef görüyorum var .

context.shadowColor = "transparent"; 
İlgili konular