मैं html5 में एक पारदर्शी कैनवास कैसे बनाऊं?


123

मैं एक कैनवास को पारदर्शी कैसे बना सकता हूं? मुझे इसकी आवश्यकता है क्योंकि मैं एक दूसरे के ऊपर दो कैनवस रखना चाहता हूं।

जवाबों:


194

कैनवस डिफ़ॉल्ट रूप से पारदर्शी होते हैं।

पृष्ठ पृष्ठभूमि छवि सेट करने का प्रयास करें, और फिर उसके ऊपर एक कैनवास डालें। यदि कैनवास पर कुछ भी नहीं खींचा गया है, तो आप पृष्ठ की पृष्ठभूमि को पूरी तरह से देख सकते हैं।

एक ग्लास प्लेट पर पेंटिंग की तरह एक कैनवास के बारे में सोचो।


6
कैनवस के पास मोबाइल पर एक काली पृष्ठभूमि है, इसलिए कैनवस को स्तरित करना वहां काम नहीं करता है। (कम से कम Android के लिए क्रोम पर)
nicholeous

11
मानकों के लिए इतना, हमेशा की तरह।
त्रिवेंको

6
मुझे लगता है कि ये जवाब बिंदु को याद कर रहे हैं। उपरोक्त प्रश्न के समान, मैं दो स्तरित कैनवस रखना चाहता हूं: नीचे की एक स्थिर छवि है, लेकिन शीर्ष में एनिमेटेड स्प्राइट होंगे। इस शीर्ष परत के लिए एक पारदर्शी पृष्ठभूमि होनी चाहिए, लेकिन साथ ही इसे red क्लियर ’करना होगा और हर एनीमेशन फ्रेम के साथ फिर से बनाना होगा। हां, यह डिफ़ॉल्ट रूप से पारदर्शी शुरू होता है, लेकिन आप इसे पारदर्शी और हर नए एनीमेशन फ्रेम की शुरुआत के लिए कैसे रीसेट करते हैं?
जे स्प्रैग

3
यह किसी भी समय एक कैनवास को साफ करने का तरीका है: stackoverflow.com/questions/2142535/…
Omiod

जब से आप कई upvotes मिला है आप कम से कम इस सवाल का जवाब दे सकते हैं? आप एक गैर पारदर्शी कैनवास को पारदर्शी कैसे बनाते हैं?
डीडीडी

48

मेरा मानना ​​है कि आप वास्तव में वही करने की कोशिश कर रहे हैं जो मैंने अभी करने की कोशिश की है: मैं दो स्टैक्ड कैनवस चाहता हूं ... नीचे एक स्थिर छवि है और शीर्ष में एनिमेटेड स्प्राइट हैं। एनीमेशन की वजह से, आपको हर नए फ्रेम को प्रस्तुत करने की शुरुआत में शीर्ष परत की पृष्ठभूमि को पारदर्शी बनाने की आवश्यकता होती है। मुझे अंत में जवाब मिला: यह GlobalAlpha का उपयोग नहीं कर रहा है, और यह एक rgba () रंग का उपयोग नहीं कर रहा है। सरल, प्रभावी उत्तर है:

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

45

Iif आप एक विशेष चाहते हैं कि आप <canvas id="canvasID">हमेशा पारदर्शी रहें, आपको बस सेट करना है

#canvasID{
    opacity:0.5;
}

इसके बजाय, यदि आप चाहते हैं कि कैनवास क्षेत्र के अंदर कुछ विशेष तत्व पारदर्शी हों, तो आपको ड्रॉ करते समय पारदर्शिता लाना होगा

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

आह, मैं fillStyle पारदर्शिता के लिए देख रहा था। धन्यवाद!
कर्मकार

3
FYI करें: opacityयदि कैनवास में पृष्ठभूमि भराव है तो परिवर्तन का कोई प्रभाव नहीं पड़ेगा।
एडम एबर्लिन

3

बस कैनवास की पृष्ठभूमि को पारदर्शी पर सेट करें।

#canvasID{
    background:transparent;
}

1
यह उत्तर सभी स्थितियों में काम नहीं करता है, संदर्भ .clearRect (0, 0, चौड़ाई, ऊंचाई) वह समाधान है जो मेरे लिए काम करता है
दिमित्री

2

अपने दो कैनवस को तीसरे कैनवास पर पेंट करें।

मुझे भी यही समस्या थी और यहाँ के किसी भी समाधान से मेरी समस्या हल नहीं हुई। मेरे पास एक अपारदर्शी कैनवास था, जिसके ऊपर एक और पारदर्शी कैनवास था। अपारदर्शी कैनवास पूरी तरह से अदृश्य था लेकिन पेज बॉडी की पृष्ठभूमि दिखाई दे रही थी। शीर्ष पर पारदर्शी कैनवास से चित्र दिखाई दे रहे थे, जबकि इसके नीचे अपारदर्शी कैनवास नहीं था।


0

अंतिम उत्तर पर टिप्पणी नहीं कर सकते हैं, लेकिन फिक्स अपेक्षाकृत आसान है। बस अपने अपारदर्शी कैनवास की पृष्ठभूमि का रंग निर्धारित करें:

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

मुझे यकीन नहीं है, लेकिन ऐसा लगता है कि पृष्ठभूमि-रंग शरीर से पारदर्शी के रूप में विरासत में मिला है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.