arrays - 在另一个 Canvas 上创建 Canvas

标签 arrays html html5-canvas

这是我的 HTML5 Canvas 的 HTML。

<div id="board">
    <h1>Draw Here</h1>
        <canvas id="canvas" width="490px" height="220px">
            Sorry, your browser doesn't support canvas technology.
        </canvas>
    Colour: 
    <select id="selectColor">
              <option id="colBlack" value="black" selected="selected">Black</option>
              <option id="colRed" value="red">Red</option>
              <option id="colBlue" value="blue">Blue</option>
              <option id="colGreen" value="green">Green</option>
              <option id="colOrange" value="orange">Orange</option>
              <option id="colYellow" value="yellow">Yellow</option>
    </select>
    Thickness: 
    <select id="selectThickness">
              <option id="thin" value="3">Thin</option>
              <option id="normal" value="5" selected="selected">Normal</option>
              <option id="thick" value="7">Thick</option>
    </select>
    Draw type: 
    <select id="drawType">
              <option id="line" value="line" selected="selected">Line</option>
              <option id="path" value="path">Path</option>
              <option id="rectangle" value="rectangle">Rectangle</option>
    </select>
</div>

我想在此 Canvas 上动态创建另一个相同尺寸的(透明) Canvas 。我怎样才能做到这一点?

最佳答案

将 Canvas 包裹到 div 中:

<div class="stack">
    <canvas ...></canvas>
</div>

div 容器的样式:

.stack {
    position:relative;
    }
.stack canvas {
    position:absolute;
    left:0;
    top:0;
    }

这将使所有 Canvas 位于包装 div 内的绝对位置 (0, 0)。

动态“克隆” Canvas :

var canvas = document.getElementById("canvas"),
    topCanvas = document.createElement("canvas");

// set size:
topCanvas.width = canvas.width;
topCanvas.height = canvas.height;

// insert into DOM on top:
canvas.parentNode.insertBefore(topCanvas, canvas);

可以选择查看此答案,仅直接使用 HTML 和 CSS 进行覆盖:
Stacking mutliple canvases in HTML5

// Will insert a medium transparent blue canvas on top of a red
// producing purple canvas to show they are perfectly overlapping.
var canvas = document.getElementById("canvas"),
    topCanvas = document.createElement("canvas");

// set size:
topCanvas.width = canvas.width;
topCanvas.height = canvas.height;

// insert into DOM on top:
canvas.parentNode.insertBefore(topCanvas, canvas);
.stack {position:relative}
.stack canvas {
  position:absolute;
  left:0;
  top:0;
  border:1px solid #000;
  background:rgba(255,0,0,0.5)
}
canvas:first-child { background:rgba(0,0,255,1)}
<div class="stack">
  <canvas id="canvas"></canvas>
</div>

关于arrays - 在另一个 Canvas 上创建 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36216561/

上一篇:range - VHDL 范围分配

下一篇:C# 合格导入

相关文章:

java - 在 Android 中的两个 Activity 之间传递字符串数组时出现 NullPointer

javascript - JavaScript 可以使用多少内存?

JavaScript、 Canvas : Calculating the angle from a flying bubble

html - 在文本 blob 中保留换行符但限制为一行

javascript - 如何下载外部视频而不在浏览器中播放?

html - margin div 水平和垂直居中

javascript - 在 JS Canvas 动画中为台球物理添加重力

arrays - 创建 GLSL 制服数组?

php - 使用 mysqli prepare 查询数组

javascript - 最高效的阵列洗牌器