Ответы:
По умолчанию холсты прозрачные.
Попробуйте установить фоновое изображение страницы, а затем накройте его холстом. Если на холсте ничего не нарисовано, вы можете полностью увидеть фон страницы.
Думайте о холсте как о картине на стеклянной пластине.
Я считаю, что вы пытаетесь сделать именно то, что я пытался сделать: мне нужны два сложенных холста ... нижний имеет статическое изображение, а верхний - анимированные спрайты. Из-за анимации вам необходимо очищать фон верхнего слоя до прозрачного в начале рендеринга каждого нового кадра. Я наконец нашел ответ: он не использует globalAlpha и не использует цвет rgba (). Простой и эффективный ответ:
context.clearRect(0,0,width,height);
Если вы хотите, чтобы конкретный объект <canvas id="canvasID">
всегда был прозрачным, вам просто нужно установить
#canvasID{
opacity:0.5;
}
Вместо этого, если вы хотите, чтобы некоторые элементы внутри области холста были прозрачными, вы должны установить прозрачность при рисовании, т.е.
context.fillStyle = "rgba(0, 0, 200, 0.5)";
opacity
изменения не будут иметь никакого эффекта, если на холсте есть фоновая заливка.
Просто сделайте фон холста прозрачным.
#canvasID{
background:transparent;
}
Нарисуйте свои два холста на третьем холсте.
У меня была такая же проблема, и ни одно из решений здесь не решило мою проблему. У меня был один непрозрачный холст с другим прозрачным холстом над ним. Непрозрачный холст был полностью невидим, но фон тела страницы был виден. Рисунки с прозрачного холста сверху были видны, а непрозрачного холста под ним - нет.
Не могу прокомментировать последний ответ, но исправить это относительно просто. Просто установите цвет фона непрозрачного холста:
#canvas1 { background-color: black; } //opaque canvas
#canvas2 { ... } //transparent canvas
Я не уверен, но похоже, что цвет фона унаследован как прозрачный от тела.