Html5'te nasıl şeffaf bir tuval yaparım?


123

Bir tuvali nasıl şeffaf yapabilirim? Yapmam gerek çünkü iki tuvali üst üste koymak istiyorum.

Yanıtlar:


194

Tuvaller varsayılan olarak şeffaftır.

Bir sayfa arka plan resmi ayarlamayı deneyin ve ardından üzerine bir tuval yerleştirin. Tuval üzerine hiçbir şey çizilmezse, sayfa arka planını tam olarak görebilirsiniz.

Bir tuvali cam bir tabakta resim gibi düşünün.


6
Canvas, mobil cihazlarda siyah bir arka plana sahiptir, bu nedenle katmanlama tuvalleri burada çalışmaz. (En azından Android için Chrome'da)
nicholeous

11
Her zamanki gibi standartlar için çok fazla.
Triynko

6
Sanırım bu cevaplar asıl noktayı kaçırıyor. Yukarıdaki soruya benzer şekilde, iki katmanlı tuvale sahip olmak istiyorum: alttaki statik bir görüntüye sahip, ancak üstteki hareketli sprite sahip olacak. Bu üst katmanın şeffaf bir arka planı olması gerekir, ancak aynı zamanda her animasyon karesiyle 'temizlenmeli' ve yeniden çizilmelidir. Evet, varsayılan olarak şeffaf başlar, ancak saydamlığa ve her yeni animasyon karesinin başlangıcına nasıl sıfırlarsınız?
J Sprague

3
Bir tuvali her zaman böyle temizleyebilirsiniz: stackoverflow.com/questions/2142535/…
Omiod

Çok fazla olumlu oy aldığına göre, en azından soruyu da cevaplayabilir misin? Şeffaf olmayan bir tuvali nasıl şeffaf yaparsınız?
DDD

48

Az önce yapmaya çalıştığım şeyi tam olarak yapmaya çalıştığınıza inanıyorum: Üst üste dizilmiş iki tuval istiyorum ... alttaki statik bir görüntüye sahip ve üstteki hareketli sprite içeriyor. Animasyon nedeniyle, her yeni kareyi oluşturmanın başlangıcında üst katmanın arka planını şeffaf olacak şekilde temizlemeniz gerekir. Sonunda cevabı buldum: globalAlpha kullanmıyor ve rgba () rengi kullanmıyor. Basit ve etkili cevap şudur:

context.clearRect(0,0,width,height);

45

Bir <canvas id="canvasID">özelliğin her zaman şeffaf olmasını istiyorsanız, sadece ayarlamanız gerekir.

#canvasID{
    opacity:0.5;
}

Bunun yerine, tuval alanındaki bazı belirli öğelerin şeffaf olmasını istiyorsanız, çizerken saydamlığı ayarlamanız gerekir.

context.fillStyle = "rgba(0, 0, 200, 0.5)";

Ah, fillStyle şeffaflığını arıyordum. Teşekkürler!
Workman

3
Bilginize: opacitytuvalde bir arka plan dolgusu varsa değişikliklerin hiçbir etkisi olmayacaktır.
Adam Eberlin

3

Sadece tuvalin arka planını şeffaf olarak ayarlayın.

#canvasID{
    background:transparent;
}

1
Bu cevap her durumda işe yaramıyor, context.clearRect (0, 0, genişlik, yükseklik) benim için işe
Dmitriy

2

İki tuvalinizi üçüncü bir tuvale boyayın.

Aynı sorunu yaşadım ve buradaki çözümlerin hiçbiri sorunumu çözmedi. Üstünde başka bir şeffaf tuval olan bir opak tuvalim vardı. Opak tuval tamamen görünmezdi, ancak sayfa gövdesinin arka planı görünürdü. Üstteki şeffaf tuvalden çizimler görünürken, altındaki opak tuval görünmüyordu.


0

Son cevaba yorum yapamıyorum, ancak düzeltme nispeten kolaydır. Opak tuvalinizin arka plan rengini ayarlayın:

#canvas1 { background-color: black; } //opaque canvas
#canvas2 { ... } //transparent canvas

Emin değilim ama görünüşe göre arka plan rengi şeffaf olarak vücuttan miras alınmış.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.