HTML5 Canvas Draw Rect - Получил границу разной ширины? - PullRequest
8 голосов
/ 06 ноября 2011

Результат квадратной границы оказывается различной ширины, кажется, что ширина правой границы и нижней границы в 2 раза больше ширины левой и верхней границы.Почему так странно?Я хочу, чтобы границы всех сторон были одинаковой ширины.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML5 Test</title>
<script type="text/javascript">
  function draw () {
    var canvas = document.getElementById('rectangle');
    var ctx = canvas.getContext('2d');

    ctx.save();
    ctx.lineWidth = 30;
    ctx.fillStyle = "black";
    ctx.fillRect(0,0,100,100);
    ctx.strokeStyle = "red";
    ctx.strokeRect(0,0,100,100);        
    ctx.restore();
  }
</script>
</head>

<body onload="draw()">
<canvas id="rectangle"></canvas>
</body>
</html>

enter image description here

1 Ответ

7 голосов
/ 06 ноября 2011

Это потому, что ваша граница обрезается сверху и слева, потому что именно там начинается холст, и если ваш прямоугольник начинается с (0,0), координата x левого конца левой границы будет равна -30 .

Сделайте начальные координаты выше 30 (чтобы границы ваших границ не были отрицательными), и все будет работать нормально.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...