无法在 Javascript 中同时创建两个对象。一个物体隐藏了另一个物体

问题描述 投票:0回答:1

我想使用 javascript 创建一个符号。它需要创建圆形和矩形。我创建了圆形和矩形。但是当矩形放在圆形下面时,则圆形不显示。如何解决这个问题?

var circle = document.getElementById('canvas1');
var ctx = circle.getContext('2d');
ctx.beginPath();
ctx.arc(300, 300, 50, 0, 2 * Math.PI);
ctx.stroke();

//create gradient
var grd = ctx.createRadialGradient(300, 300, 50, 300, 300, 5);

var fillColor = 'black';
ctx.fillStyle = fillColor;
ctx.fill();

var rect = document.getElementById('canvas2');
var ctx2 = rect.getContext('2d');
ctx2.beginPath();
ctx2.rect(200, 10, 200, 40);
ctx2.stroke();

var grd2 = ctx2.createLinearGradient(0, 0, 100, 100);
grd2.addColorStop(0, "black");
grd2.addColorStop(1, "white");

ctx2.fillStyle = grd2;
ctx2.fill();
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <canvas id="canvas1" width="800" height="250"></canvas>
  <canvas id="canvas2" width="800" height="300"></canvas>

  <script src="index.js"></script>
</body>

</html>

javascript html geometry html5-canvas
1个回答
0
投票

代码中唯一的问题是画布高度为 250 像素,并且您在画布外 (300,300) 处绘制圆圈

我刚刚改变

arc
打电话

ctx.arc(100, 100, 50, 0, 2 * Math.PI);

var circle = document.getElementById('canvas1');
var ctx = circle.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 50, 0, 2 * Math.PI); // changed this line
ctx.stroke();

//create gradient
var grd = ctx.createRadialGradient(300, 300, 50, 300, 300, 5);

var fillColor = 'black';
ctx.fillStyle = fillColor;
ctx.fill();

var rect = document.getElementById('canvas2');
var ctx2 = rect.getContext('2d');
ctx2.beginPath();
ctx2.rect(200, 10, 200, 40);
ctx2.stroke();

var grd2 = ctx2.createLinearGradient(0, 0, 100, 100);
grd2.addColorStop(0, "black");
grd2.addColorStop(1, "white");

ctx2.fillStyle = grd2;
ctx2.fill();
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <canvas id="canvas1" width="800" height="250"></canvas>
  <canvas id="canvas2" width="800" height="300"></canvas>

  <script src="index.js"></script>
</body>

</html>

© www.soinside.com 2019 - 2024. All rights reserved.