Можно ли написать изображение на холсте и написать текст с фоном? Например, как это:Текст на холсте: фон
ответ
Как текст работает в холст
К сожалению, нет, вы не можете производить текст с фоном с текстом методов - только заполнить или обрисовать сам текст.
Это потому, что глифы от шрифта (шрифта) преобразуются в отдельные фигуры или пути, если вы хотите, где фон его будет внутренней частью самого глифа (той части, которую вы видите при использовании заливки). Для черного ящика нет слоя (прямоугольника, в котором находится глиф), глиф использует, кроме того, из его геометрического положения, поэтому нам нужно предоставить своеобразный черный ящик и подшипники.
На старых компьютерных системах большинство шрифтов, где двоичный шрифт, который устанавливает или очищает пиксели. Вместо того, чтобы просто очищать фон, вы можете выбрать фон вместо фона. Это не относится к векторным шрифтам по умолчанию (браузер имеет прямой доступ к геометрии глифов и, следовательно, может обеспечить такой фон).
Создание пользовательского фона
Для того, чтобы создать фон вам нужно будет сделать это первым, используя другие средства, такие как форма или изображения.
Примеры:
ctx.fillRect(x, y, width, height);
или
ctx.drawImage(image, x, y [, width, height]);
затем нарисовать текст вверху:
ctx.fillText('My text', x, y);
Вы можете использовать measureText
, чтобы узнать ширину текста (в будущее также высота: восхождение + спуск) и использовать это в качестве основы:
var width = ctx.measureText('My text').width; /// width in pixels
Вы можете обернуть все это функцией. Функция здесь является основным, но вы можете расширить его с цветом и параметрами фона, а также дополнения и т.д.
/// expand with color, background etc.
function drawTextBG(ctx, txt, font, x, y) {
/// lets save current state as we make a lot of changes
ctx.save();
/// set font
ctx.font = font;
/// draw text from top - makes life easier at the moment
ctx.textBaseline = 'top';
/// color for background
ctx.fillStyle = '#f50';
/// get width of text
var width = ctx.measureText(txt).width;
/// draw background rect assuming height of font
ctx.fillRect(x, y, width, parseInt(font, 10));
/// text color
ctx.fillStyle = '#000';
/// draw text on top
ctx.fillText(txt, x, y);
/// restore original state
ctx.restore();
}
Просто обратите внимание, что этот способ «измерения» высота не является точным. Вы можете измерить высоту шрифта с помощью временного элемента div/span и получить от него рассчитанный стиль, если для него установлен шрифт и текст.
+1 - Я заметил тангенциальную проблему, о которой мне было любопытно. Текст не может быть выделен. Так же, как это невозможно выделить на изображении. Есть ли способ сделать части текста на холсте, не используя элемент html в качестве слоя? –
@TravisJ грустно не по умолчанию. Текст просто становится пассивным пикселем после того, как текст нарисован так же, как любая другая форма или изображение, поэтому нет никакой разницы с холстом. Вам нужно будет реализовать всю логику для обработки текста как объекта (местоположение, размер, диапазон выбора, выделение, перерисовка и т. Д.).IMHO нет ничего плохого в использовании элемента ввода сверху, если это необходимо, но даже для этого потребуется, чтобы какая-то пользовательская логика хорошо работала с холстом. – K3N
Используйте fabric.js, все связанные с этим холсты находятся здесь http://fabricjs.com/ @rask –
- 1. «Анимационный» фон на холсте
- 2. Текст на холсте Текст
- 3. Плохой текст на холсте
- 4. Размахивающий текст на холсте
- 5. Текст чертежа на холсте
- 6. Текст центра на холсте?
- 7. Текст на Android на холсте
- 8. Как задать фон для объекта на холсте?
- 9. javascript: рисунок рисунка (фон) на холсте
- 10. Re-draw прозрачный фон на холсте
- 11. Java SWT - Прозрачный фон на холсте?
- 12. Нарисовать прозрачный текст на холсте
- 13. Применить стиль на холсте Текст
- 14. Нарисуйте текст вертикально на холсте
- 15. android- animate текст на холсте
- 16. Текст на холсте, резкий артефакт
- 17. Написать вертикальный текст на холсте
- 18. Статический текст на прокручиваемом холсте
- 19. Android-прокручиваемый текст на холсте
- 20. Текст на холсте в j2me
- 21. Как нарисовать текст на холсте?
- 22. html 5 текст на холсте
- 23. HTML5: Обратный текст на холсте
- 24. изменить текст на холсте mouseclick
- 25. JavaScript - Сделать текст на холсте белым
- 26. Текст на Android-центре на холсте
- 27. Прочтите текст в холсте, определите местоположение текста на холсте
- 28. Повернуть текст в холсте
- 29. Предварительно отформатированный текст на холсте Элемент
- 30. Как рисовать курсивом текст на холсте Android?
Не могли бы вы предоставить более подробную информацию о том, что вы пробовали? – davidsbro
Это то, что вы пытаетесь сделать? http://jsfiddle.net/m1erickson/QDDcU/ – markE