Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.11.2018, 15:05
Интересующийся
Отправить личное сообщение для super-html Посмотреть профиль Найти все сообщения от super-html
 
Регистрация: 20.09.2017
Сообщений: 22

Не загружается изображение через new Image()
Не хочет загружаться изображение и заполнятся текстурой почему то.

Код:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Canvas в HTML5</title>
    </head>
    <body>

<div id='test'></div>

        <script>
image = new Image()

image.onload = function()
{
  pattern = context.createPattern(image, 'repeat')
  context.fillStyle = pattern
  context.fillText('WickerpediA', 0, 0)
  context.strokeText('WickerpediA', 0, 0)
  document.getElementById('test').appendChild(pattern)
}
		image.src = '1.jpg'

        </script>
    </body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 23.11.2018, 15:24
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

404 Not found?
Ответить с цитированием
  #3 (permalink)  
Старый 23.11.2018, 15:32
Интересующийся
Отправить личное сообщение для super-html Посмотреть профиль Найти все сообщения от super-html
 
Регистрация: 20.09.2017
Сообщений: 22

У меня фото есть 1.jpg, я его раньше загружал, а тут просто пустой экран и все..
Ответить с цитированием
  #4 (permalink)  
Старый 23.11.2018, 15:39
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

Ну так откройте консоль (F12, вкладка "console") и убедитесь, что проблема не в отсутствии изображения по адресу, тем более он у вас относительный.

upd. Где у вас сам холст?
Переменная "context" не определена.
Переменные объявляются с помощью ключевого слова "var".
https://learn.javascript.ru/variables

Последний раз редактировалось Nexus, 23.11.2018 в 15:42.
Ответить с цитированием
  #5 (permalink)  
Старый 23.11.2018, 15:58
Интересующийся
Отправить личное сообщение для super-html Посмотреть профиль Найти все сообщения от super-html
 
Регистрация: 20.09.2017
Сообщений: 22

Переписал код, определил переменную pattern но все равно не хочет, выдает вот такую ошибку:
Цитата:
Uncaught ReferenceError: context is not defined
Ошибка почему-то на 16 строке. Изображение находится в одной папке и всегда загружалось с нее, там не нужно длинный путь писать.

Вот модернизированный код:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Canvas в HTML5</title>
    </head>
    <body>

<canvas id='test' width='600px' height='600px'></canvas>

        <script>
image = new Image()

image.onload = function()
{
  var pattern = context.createPattern(image, 'repeat')
  context.fillStyle = pattern
  context.fillText('WickerpediA', 0, 0)
  context.strokeText('WickerpediA', 0, 0)
  document.getElementById('test').appendChild(pattern)
}
		image.src = '1.jpg'

        </script>
    </body>
</html>

Последний раз редактировалось super-html, 23.11.2018 в 16:01.
Ответить с цитированием
  #6 (permalink)  
Старый 23.11.2018, 16:07
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

Сообщение от super-html
Ошибка почему-то на 16 строке.
Сообщение от Nexus
Переменная "context" не определена.
Переменная image так и осталась без "var".

Попробуйте так:
var image = document.createElement('img'),
    context = document.getElementById('test').getContext('2d');

image.onload = function() {
    context.fillStyle = context.createPattern(image, 'repeat');
    context.fillText('WickerpediA', 0, 0);
    context.strokeText('WickerpediA', 0, 0);
};

image.src = '1.jpg';
Ответить с цитированием
  #7 (permalink)  
Старый 23.11.2018, 16:37
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Canvas в HTML5</title>
    </head>
    <body>
       <canvas id='test' width='600px' height='600px'></canvas>
       <script>
          var canvas = document.querySelector("#test"),
                context = canvas.getContext('2d'),
                image = new Image();
          image.src = 'https://javascript.ru/cat/list/donkey.gif';
          image.onload = function() {
              var pattern = context.createPattern(image, 'repeat');
              context.font = "24px serif";
              context.fillText('WickerpediA', 0, 30);
              context.rect(0,50,600,600);
              context.fillStyle = pattern;
              context.fill();
          }
        </script>
    </body>
</html>

Последний раз редактировалось Dilettante_Pro, 23.11.2018 в 16:49.
Ответить с цитированием
  #8 (permalink)  
Старый 23.11.2018, 20:57
Интересующийся
Отправить личное сообщение для super-html Посмотреть профиль Найти все сообщения от super-html
 
Регистрация: 20.09.2017
Сообщений: 22

Благодарю Нексус, вот вроде отображает нормально.

Код:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Canvas в HTML5</title>
    </head>
    <body>

<canvas id='test' width='1250px' height='600px'></canvas>

        <script>
image = new Image()

var image = document.createElement('img'),
    context = document.getElementById('test').getContext('2d');

image.onload = function() {
    context.fillStyle = context.createPattern(image, 'repeat');
	context.font = '200px Verdana'
    context.fillText('WickerpediA', 0, 300);
    context.strokeText('WickerpediA', 0, 300);
};

image.src = '1.jpg';


        </script>
    </body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 23.11.2018, 20:58
Интересующийся
Отправить личное сообщение для super-html Посмотреть профиль Найти все сообщения от super-html
 
Регистрация: 20.09.2017
Сообщений: 22

Dilettante_Pro, также благодарю, ваш пример увидел уже после того как отправил свой выше...
Ответить с цитированием
  #10 (permalink)  
Старый 23.11.2018, 23:48
Интересующийся
Отправить личное сообщение для super-html Посмотреть профиль Найти все сообщения от super-html
 
Регистрация: 20.09.2017
Сообщений: 22

Решил попробовать нарисовать кривую, но почему-то вторая кривая не рисуется, первая нарисовалась без проблем.
Хочу сделать такую же кривую как слева, только справа..
Вот код:

Код:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Canvas в HTML5</title>
<script src='OSC.js'></script>		
    </head>
    <body>

<canvas id='test' width='1250px' height='600px'></canvas>
        <script>
var c=document.getElementById("test");
var ctx=c.getContext("2d");
ctx.beginPath(); 
ctx.moveTo(20,20);           // Create a starting point
ctx.lineTo(100,20);          // Create a horizontal line
//arcTo(x1,y1,x2,y2,радиус)
ctx.arcTo(150,20,150,150,50); // Create an arc
ctx.lineTo(150,220);         // Continue with vertical line
ctx.lineTo(500,220); 
ctx.lineTo(500,50); 
ctx.arcTo(500,50,600,20,50);
ctx.stroke();                // Draw it


        </script>
    </body>
</html>
Изображения:
Тип файла: jpg Снимок.JPG (14.9 Кб, 1 просмотров)

Последний раз редактировалось super-html, 23.11.2018 в 23:51.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести через JS данные lmi2002 AJAX и COMET 4 29.05.2017 13:39
можно ли доверять е-майлу, предоставляемому через api соц-сетей? winch Общие вопросы Javascript 3 11.11.2016 11:05
Проблемы с билдом приложения Sogl ExtJS 11 27.09.2016 22:07
Плавающее изображение human Элементы интерфейса 11 18.03.2009 17:32
XMLHTTPRequest передача имя через POST dds AJAX и COMET 0 14.08.2008 14:44