Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2022, 01:28   #1
Daniil_123
Новичок
Джуниор
 
Регистрация: 12.06.2022
Сообщений: 5
По умолчанию Как нарисовать линию по вверх текста?

Добрый вечер форум!
Мне нужно с помощь canvas нарисовать зачеркнутый текст к примеру: Ку-ку

Этого в канвасе нет, но как идея можно нарисовать текст, а уже по вверх него линию.
Но ничего не получается(

Сделал так:
Код:
	const textWidth = ctx.measureText(text.text).width;


	ctx.beginPath();

	ctx.moveTo(text.x, text.y);
	ctx.lineTo(textWidth, text.y);

	ctx.stroke();
Но как расположить эту линию посредине текста?
Daniil_123 вне форума Ответить с цитированием
Старый 12.06.2022, 01:31   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А высоту пополам поделив вычислять не надо?
Линию надо рисовать от text.x до text.x + textWidth и по y равной text.y + textHeight / 2
macomics вне форума Ответить с цитированием
Старый 12.06.2022, 01:49   #3
Daniil_123
Новичок
Джуниор
 
Регистрация: 12.06.2022
Сообщений: 5
По умолчанию

macomics,
Код:
	ctx.moveTo(text.x, text.y + textHeight / 2);
	ctx.lineTo(text.x + textWidth, text.y + textHeight / 2);
Если я делаю так линия становится того размера, спасибо но у меня текст идет с правой стороны в лево (то есть textAlign = right) и из-за этого она c лева рисуется.
Но линия ниже
Daniil_123 вне форума Ответить с цитированием
Старый 12.06.2022, 01:52   #4
Daniil_123
Новичок
Джуниор
 
Регистрация: 12.06.2022
Сообщений: 5
По умолчанию

Daniil_123,
Код:
	ctx.moveTo(text.x, text.y + textHeight / 2);
	ctx.lineTo(text.x - textWidth, text.y + textHeight / 2);
вот так рисуется как раз ниже текста, но как сделать посредине?
Daniil_123 вне форума Ответить с цитированием
Старый 12.06.2022, 01:54   #5
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Потому, что координаты отсчитываются в этом случае не от верхнего левого угла, а от нижнего правого. Тогда надо рисовать линию от text.x - textWidth до text.x и y равной text.y - textHeight / 2
macomics вне форума Ответить с цитированием
Старый 12.06.2022, 01:57   #6
Daniil_123
Новичок
Джуниор
 
Регистрация: 12.06.2022
Сообщений: 5
По умолчанию

macomics, https://imgur.com/a/XRFduc2 вот что получается
Daniil_123 вне форума Ответить с цитированием
Старый 12.06.2022, 02:04   #7
Daniil_123
Новичок
Джуниор
 
Регистрация: 12.06.2022
Сообщений: 5
По умолчанию

Daniil_123, textHeight *= ctx.measureText(text.text).alphabet icBaseline; вот так решил

macomics Спасибо за помощь!!

Последний раз редактировалось Daniil_123; 12.06.2022 в 02:08.
Daniil_123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нарисовать линию на картинке spirit-ua PHP 13 02.07.2015 09:30
нарисовать в паскале линию... Proskurina Помощь студентам 3 10.10.2012 15:07
нарисовать в паскале линию Proskurina Паскаль, Turbo Pascal, PascalABC.NET 2 09.10.2012 00:14
Как нарисовать необычную линию Marsel737 Общие вопросы Delphi 2 17.05.2011 20:03
Как нарисовать линию по пикселям DenLab Общие вопросы Delphi 4 03.12.2008 09:34