Форум программистов, компьютерный форум, киберфорум
JavaScript: HTML5 Canvas
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 71

Нарисовать линии разным цветом поверх изображения.

22.11.2018, 17:19. Показов 6458. Ответов 3

Студворк — интернет-сервис помощи студентам
Вставил фотку 1.jpg и перечеркнул картинку рисованием через методы объекта image. Хочу сделать одну линию красную, вторую фиолетовую, но когда меняю цвет, все меняется на фиолетовый. Мне нужно одна линия красная, другая фиолетовая.

Меняю таким способом :

JavaScript
1
    ctx.strokeStyle = 'magenta';
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Image в HTML5</title>
    </head>
    <body onload='draw()'>
<canvas id='canvas' height='800' width='1000'></canvas>
 
        <script>
function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  var img = new Image();
  img.onload = function(){
    //Загружается изображение и вставляется с координат х = 50  у = 50
    ctx.drawImage(img,50,50);
    ctx.beginPath();
    //Начинаем рисовать с координат х = 50, у = 50
    ctx.moveTo(50,50);
    ctx.lineWidth=15; // толщина линии
    ctx.strokeStyle = "#ff0000"; // цвет линии
    ctx.lineTo(650,650);
    ctx.lineCap = "round"; // закругляем наконечник
    ctx.moveTo(50,650);
    ctx.strokeStyle = 'magenta';
    ctx.lineTo(650,50);
    ctx.stroke();
  };
  img.src = '1.jpg';
}   
        </script>
    </body>
</html>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2018, 17:19
Ответы с готовыми решениями:

Рисование линии разным цветом по длине
Можно ли нарисовать линию у которой по длине меняется цвет? Например с красного на зёлёный, плавно. Известны координаты только начала...

Нарисовать 5 разных кругов разным цветом
нарисовать 5 разных круга разным цветом Добавлено через 9 минут Необходимо нарисовать 5 различных радиусом и цветом круга

Нарисовать на картинке красные линии поверх черных
Есть черно белая картинка (BMP), на которой черные горизонтальные полосы, нужно ее загрузить в picturebox и нарисовать тонкие красные линии...

3
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 71
22.11.2018, 18:05  [ТС]
Решил немного модифицировать код и сделал такое как на фото ниже.

Как сделать так через стиль трансформ чтобы эти линии вращались?
Картинку можно вращать через трансформ, а вот линии как?

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Canvas в HTML5</title>
    </head>
    <body onload='draw()'>
<canvas id='canvas' height='800' width='1000'></canvas>
 
        <script>
function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  var img = new Image();
  img.onload = function(){
    //Загружается изображение и вставляется с координат х = 50  у = 50
    ctx.drawImage(img,50,50);
    ctx.beginPath();
    //Начинаем рисовать с координат х = 50, у = 50
    ctx.moveTo(50,50);
    ctx.lineWidth=15; // толщина линии
    ctx.strokeStyle = "#ff0000"; // цвет линии
    ctx.lineTo(650,650);
    ctx.stroke();
    ctx.beginPath()
    ctx.lineCap = "round"; // закругляем наконечник
    ctx.moveTo(50,650);
    ctx.strokeStyle = 'magenta';
    ctx.lineTo(650,50);
    ctx.stroke();
    ctx.beginPath()
    ctx.moveTo(350,50);
    ctx.lineCap = "round"; // закругляем наконечник
    ctx.strokeStyle = 'blue';
    ctx.lineTo(350,650);
    ctx.stroke();
    ctx.beginPath()
    ctx.moveTo(50,350);
    ctx.lineCap = "round"; // закругляем наконечник
    ctx.strokeStyle = 'green';
    ctx.lineTo(650,350);
    ctx.stroke();
  };
  img.src = '1.JPG';
}   
        </script>
    </body>
</html>
Миниатюры
Нарисовать линии разным цветом поверх изображения.  
0
22.11.2018, 18:26

Не по теме:

usa-1450, пошто проффесора забижаете? :)

0
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
23.11.2018, 14:19
usa-1450, вращайте сам контекст, на котором рисуются линии
JavaScript
1
ctx.rotate(angle);
Добавлено через 38 минут
usa-1450, также необходимо переместить точку вращения методом
JavaScript
1
context.setTransform(1, 0,0,1,x,y);
и рисовать на исходном холсте его необходимо симметрично относительно начала координат. в итоге получится вращающийся вокруг своего центра объект:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!DOCTYPE html>
<html>
  <head>
    <title>Рисование прямоугольников</title>
  </head>
  <body>
    <canvas id='mycanvas' width='1000' height='1000'></canvas>
    <script>
      canvas = document.getElementById('mycanvas');
      context = canvas.getContext('2d')
      //Градиент сверху вниз 
      //gradient = context.createLinearGradient(0, 0, 0, 270)
      //Градиент слева направа
      gradient = context.createLinearGradient(-100, 0, 100, 0);
      gradient.addColorStop(0.00, 'red');
      gradient.addColorStop(0.14, 'orange');
      gradient.addColorStop(0.28, 'yellow');
      gradient.addColorStop(0.42, 'green');
      gradient.addColorStop(0.56, 'blue');
      gradient.addColorStop(0.70, 'indigo');
      gradient.addColorStop(0.84, 'violet');
      context.rotate(Math.PI/10);
      context.fillStyle = "green";
      context.fillRect(0, 0, 200, 200);
      var fps = 30;
      var angle = 0;
      var vA = Math.PI/4/30;
      context.setTransform(1, 0,0,1,200,200);
      var timer = setInterval(function ()
      {
        context.setTransform(1, 0,0,1,0,0); // убрать все трансформации контекста
        context.fillStyle = "black";
        context.fillRect(0,0,canvas.width, canvas.height);
        context.setTransform(1, 0,0,1,200,200);
        context.rotate(angle);
        context.fillStyle = gradient;
        context.fillRect(-100, -100, 200, 200); // рисуем симметрично относительно центра координат
        angle += vA;
      }, 1000/fps);
          </script>
  </body>
</html>
Добавлено через 18 минут
а вот и сами линии
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Canvas в HTML5</title>
    </head>
    <body onload='draw()'>
<canvas id='canvas' height='800' width='1000'></canvas>
 
        <script>
function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  var img = new Image();
  img.onload = function(){
      var fps = 30;
      var angle = 0;
      var vA = Math.PI/4/30;
      ctx.setTransform(1, 0,0,1,200,200);
      var timer = setInterval(function ()
      {
        ctx.setTransform(1, 0,0,1,0,0);
        //Загружается изображение и вставляется с координат х = 50  у = 50
        ctx.fillStyle = "white";
        ctx.fillRect(0,0,canvas.width, canvas.height);
        ctx.drawImage(img,50,50);
        ctx.setTransform(3, 0,0,3,200,200);
        ctx.rotate(angle);
        ctx.beginPath();
        //Начинаем рисовать с координат х = 50, у = 50
        ctx.moveTo(-50,-50);
        ctx.lineWidth=3; // толщина линии
        ctx.strokeStyle = "#ff0000"; // цвет линии
        ctx.lineTo(50,50);
        ctx.stroke();
        ctx.beginPath()
        ctx.lineCap = "round"; // закругляем наконечник
        ctx.moveTo(50,0);
        ctx.strokeStyle = 'magenta';
        ctx.lineTo(-50,0);
        ctx.stroke();
        ctx.beginPath()
        ctx.moveTo(0,50);
        ctx.lineCap = "round"; // закругляем наконечник
        ctx.strokeStyle = 'blue';
        ctx.lineTo(0,-50);
        ctx.stroke();
        ctx.beginPath()
        ctx.moveTo(-50,50);
        ctx.lineCap = "round"; // закругляем наконечник
        ctx.strokeStyle = 'green';
        ctx.lineTo(50,-50);
        ctx.stroke();
        angle += vA;
      }, 1000/fps);
  };
  img.src = '1.jpg';
}   
        </script>
    </body>
</html>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.11.2018, 14:19
Помогаю со студенческими работами здесь

Написать 20 слов разным цветом с разным расположением
Нужно в паскале написать 20 слов например cyberforum что бы это слово было разным цветом + слова должны быть в произвольном расположении....

Нарисовать прямоугольное выделение поверх изображения с возможностью перемещения мышью
Сорри, если повторяюсь, но похожей темы не нашел. Существует picturebox, на котором изображен некий рисунок. Следует нарисовать...

Отрисовка изображения поверх канвы (изображения) и вращение изображения
Здравствуйте. Столкнулся с 2умя проблемами при работе с изображениями средствами C++ Builder. Хочу сделать одну интересную штуку, но...

Header разным цветом
Добрый день, вошел в ступор, подскажите пожалуйста как сделать хедер разным цветом (прикладываю макет). Суть вопроса в том что фон поля...

Текст разным цветом
Как в RhichTextBox-e или TextBox-e изменить цвет нужного фрагмента текста нужным цветом.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru