Работа с HTML5 Canvas - PullRequest
       15

Работа с HTML5 Canvas

0 голосов
/ 26 октября 2011

Я работаю с некоторыми манипуляциями с изображением, и я пытаюсь создать базовый холст, и у меня теперь есть текстовое поле. Если я ввожу любой текст, он должен немедленно измениться на холсте, и мне нужен этот текст для перемещения на холсте и записи.это позиции X и Y. Так как мне это сделать?

Вот мой код:

    <!DOCTYPE html>
<html>
<head>
<title>HTML5 Canvas</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">

    var drawLogo = function () {
        var canvas = document.getElementById('my_canvas');
        var context = canvas.getContext('2d');
        context.font = 'italic 40px sans-serif';
        context.textBaseline = 'top';
        context.fillText('Some text', 60, 0);

    };

    $(function () {
        var canvas = document.getElementById('my_canvas');
        if (canvas.getContext) {
            drawLogo();
        }
    }); 
</script>
</head> 
<body>
<canvas id="my_canvas" width="900" height="300">
Fallback content here
</canvas>
    <input id="Text1" type="text" />
</body>
</html>

1 Ответ

2 голосов
/ 26 октября 2011

Во-первых, каждый раз, когда изменяется текст, вам нужно перерисовывать ВСЮ холст.

Сделайте это:

  • Добавьте входные данные myText, x & y в функцию drawLogo: drawLogo (myText, x, y) и измените эту строку на context.fillText (myText, x, y);
  • Чтобы изменить текст на холсте, добавьте обработчик событий JS в текстовое поле и вызовите новую функцию drawLogo, передавая все 3 входных параметра.
  • Имейте в виду, что вы не можете изменить то, что нарисовано на холсте. Вы можете нарисовать его только один раз, поэтому все модификаторы должны быть выполнены за один проход.
  • Движущаяся часть неясна, но вам нужно заранее рассчитать уравнения движения в JS. Когда вы вызываете новый drawLogo (myText, x, y), вы передаете эти значения из JS.
  • Остерегайтесь этой строки context.textBaseline = 'top'; как и в прошлый раз, когда я проверял, это не поддерживается Firefox.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...