Подтвердить что ты не робот

Paper.js не будет изменять размер холста правильно

Я пробовал Paper.js для удовольствия, но, похоже, я уже застрял в самом начале.

Добавление resize="true" в тег canvas должно сделать элемент таким же высоким и широким, как и окно браузера. Однако это приводит к некоторому довольно странному поведению.

Я ожидал, что холст настроится на окно просмотра сразу после загрузки страницы, но это не так, поэтому я изначально думал, что он вообще не изменяет размер. Однако на самом деле это еще более странно: холст начинается с размера по умолчанию 300x150, и когда я изменяю размер окна просмотра, он растет - медленно, но неопределенно.

Для записи я попытался использовать data-paper-resize="true" или просто resize вместо этого, или с помощью Chrome вместо Firefox - все это безрезультатно.

Я не ожидаю ответа, если эта проблема вызвана какой-то необъяснимой странной настройкой на моем конце. Мне интересно, однако, если проблема распространена (или даже известна как вообще существующая) и имеет известные причины и решения.

Вот код, который я использую:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <script type="text/javascript" src="paper-full.min.js"></script>
        <script type="text/paperscript" canvas="myCanvas">

            var path = new Path();
            path.strokeColor = 'black';
            path.moveTo(new Point(120, 120));
            path.lineTo(new Point(500, 500));

        </script>
    </head>
    <body>
        <canvas id="myCanvas" style="border: 1px dotted red;" resize="true"></canvas>
    </body>
</html>
4b9b3361

Ответ 1

Добавьте в свой проект следующий CSS:

<style type="text/css">
html,
body {
    margin: 0;
    overflow: hidden;
    height: 100%;
}

/* Scale canvas with resize attribute to full size */
canvas[resize] {
    width: 100%;
    height: 100%;
}
</style>

Ответ 2

Я открыл для этого проблему на Github, и кажется, что это ошибка, введенная в 0.9.22. @Skalkaz указал мне на этот вопрос.

Вот проблема: https://github.com/paperjs/paper.js/issues/662.

Вы также можете понизить до 0.9.21 во время ожидания патча.

Ответ 3

Другой вариант - если вы используете заданные пропорции (относительно тела) - для переопределения вида бумаги:

var pageWidth = document.getElementsByTagName("BODY")[0].clientWidth
var pageHeight = document.getElementsByTagName("BODY")[0].clientHeight
view.size.width = pageWidth * myWidthScale
view.size.height = pageHeight * myHeightScale
center = new Point(width / 2, pageHeight / 2)
view.center = center