Як я можу написати текст на елементі "HTML5"?


150

Чи можливо написати текст на HTML5 canvas?


1
Я рекомендую прочитати <a href=" diveintohtml5.info/"> сайт diveintohtml5 </a> , він має свій <a href=" diveintohtml5.info/canvas.html#text"> розділ про text</a> . Це дуже добре прочитане.
chelmertz

На додаток до інших відповідей, якщо ви хочете написати текст за допомогою excanvas (для підтримки IE), вам знадобиться додатковий скрипт, доступний тут: code.google.com/p/explorercanvas/isissue/detail?id=6 Завантаження за замовчуванням ( code.google.com/p/explorercanvas/downloads/list ) не включає метод fillText та strokeText.
Кастрохендж

2
@IvanCastellanos Ви знайшли відповідні результати пошуку? Буде корисно розмістити їх тут, якщо ви знайшли їх.
Андерсон Грін

2
@IvanCastellanos - це питання (як мінімум, для мене) зараз з’являється вгорі щодо "HTML полотна тексту" в Google. Це не мета переповнення стека?
colincameron

Так, це легко зробити на Canvas. Я хотів би додати більше до вашого допису, щоб ви могли показати кілька прикладів того, що ви пробували, а що не намагалися. Просто питання не дуже корисний для Stackoverflow.com
Даг Хауф

Відповіді:


234

var canvas = document.getElementById("my-canvas");
var context = canvas.getContext("2d");

context.fillStyle = "blue";
context.font = "bold 16px Arial";
context.fillText("Zibri", (canvas.width / 2) - 17, (canvas.height / 2) + 8);
#my-canvas {
  background: #FF0;
}
<canvas id="my-canvas" width="200" height="120"></canvas>


3
Чи є спосіб отримати ширину та розмір шрифту, щоб ми могли його відцентрувати? (Динамічний зміст)
Олівер Діксон

1
припустимо: ваша ширина полотна-200, висота: 100 горизонтальна : ctx.textAlign = 'центр' ctx.fillText ('Привіт', 100 , 10) вертикаль : ctx.textBaseline = 'середній' ctx.fillText ('Привіт', 10 , 50 )
tomision

Документація:fillText
jpaugh

7

Малювання тексту на полотні

Розмітка:

<canvas id="myCanvas" width="300" height="150"></canvas>

Сценарій (з кількома різними варіантами):

<script>
    var canvas = document.getElementById('myCanvas');
    var ctx = canvas.getContext('2d');
    ctx.font = 'italic 18px Arial';
    ctx.textAlign = 'center';
    ctx. textBaseline = 'middle';
    ctx.fillStyle = 'red';  // a color name or by using rgb/rgba/hex values
    ctx.fillText('Hello World!', 150, 50); // text and position
</script>

Перегляньте документацію MDN та цей приклад JSFiddle .


6

Canvasтекстова підтримка насправді дуже добре - ви можете контролювати font, size, color, horizontal alignment, vertical alignment, і ви також можете отримати текстові метрики , щоб отримати ширину тексту в пікселях. Крім того, ви можете також використовувати полотно transformsдля rotate, stretchі навіть invertтекст.


5

Написати текст на полотні дуже просто. Не було зрозуміло, чи хочете ви, щоб хтось вводив текст на сторінку HTML, а потім цей текст з’являвся на полотні, або якщо ви збиралися використовувати JavaScript для запису інформації на екран.

У наведеному нижче коді буде записано текст у різних шрифтах та форматах на ваше полотно. Ви можете змінювати це, як хочете, щоб перевірити інші аспекти написання на полотні.

 <canvas id="YourCanvasNameHere" width="500" height="500">Canvas not supported</canvas>

 var c = document.getElementById('YourCanvasNameHere');
 var context = c.getContext('2d'); //returns drawing functions to allow the user to draw on the canvas with graphic tools. 

Ви можете або розмістити тег ідентифікатора полотна в HTML, а потім вказати ім'я, або створити полотно в коді JavaScript. Я думаю, що здебільшого я бачу <canvas>тег у HTML-коді, а при нагоді динамічно створюється у самому коді JavaScript.

Код:

  var canvas = document.getElementById('myCanvas');
  var context = canvas.getContext('2d');

  context.font = 'bold 10pt Calibri';
  context.fillText('Hello World!', 150, 100);
  context.font = 'italic 40pt Times Roman';
  context.fillStyle = 'blue';
  context.fillText('Hello World!', 200, 150);
  context.font = '60pt Calibri';
  context.lineWidth = 4;
  context.strokeStyle = 'blue';
  context.strokeText('Hello World!', 70, 70);

4

Я думаю, залежить від того, що ви хочете з цим зробити. Якщо ви просто хочете написати якийсь звичайний текст, який ви можете використовувати .fillText().


3

Так, звичайно, ви можете легко писати текст на полотні, і ви можете встановити назву шрифту, розмір шрифту та колір шрифту. Існує два способи побудови тексту на Canvas, тобто fillText () та strokeText () . Метод fillText () використовується для створення тексту, який може бути заповнений лише кольором, тоді як strokeText () використовується для створення тексту, якому можна надати лише колір контуру. Отже, якщо ми хочемо побудувати текст, який наповнений кольором і має колір контуру, ми мусимо використовувати їх обох.

ось повний приклад, як писати текст на полотні:

<canvas id="Canvas01" width="400" height="200" style="border:2px solid #bbb; margin-left:10px; margin-top:10px;"></canvas>

<script>
  var canvas = document.getElementById('Canvas01');
  var ctx = canvas.getContext('2d');

  ctx.fillStyle= "red";
  ctx.font = "italic bold 35pt Tahoma";
  //syntax : .fillText("text", x, y)
  ctx.fillText("StacOverFlow",30,80);

</script>

Ось демонстрація цього, і ви можете спробувати себе для будь-якої модифікації: http://okeschool.com/examples/canvas/html5-canvas-text-color


1

Я знайшов хороший підручник на oreilly.com .

Приклад коду:

<canvas id="canvas" width ='600px'></canvas><br />
Enter your Text here .The Text will get drawn on the canvas<br />
<input type="text" id="text" onKeydown="func();"></input><br />
</body><br />
<script>
function func(){
var e=document.getElementById("text"),t=document.getElementById("canvas"),n=t.getContext("2d");
n.fillStyle="#990000";n.font="30px futura";n.textBaseline="top";n.fillText(e.value,150,0);n.fillText("thank you, ",200,100);
n.fillText("Created by ashish",250,120)
}
</script>

чемність: @Ashish Nautiyal


1

Написати текст на полотно легко. Скажімо, що полотно оголошено як нижче.

<html>
  <canvas id="YourCanvas" width="500" height="500">
   Your Internet Browser does not support HTML5 (Get a new Browser)
  </canvas>
</html>

Ця частина коду повертає змінну на канву, яка представляє ваше полотно в HTML.

  var c  = document.getElementById("YourCanvas");

Наступний код повертає методи малювання ліній, тексту, заливок на ваше полотно.

  var ctx = canvas.getContext("2d");

<script>
  ctx.font="20px Times Roman";
  ctx.fillText("Hello World!",50,100);

  ctx.font="30px Verdana";

  var g = ctx.createLinearGradient(0,0,c.width,0);

  g.addColorStop("0","magenta");
  g.addColorStop("0.3","blue");
  g.addColorStop("1.0","red");

  ctx.fillStyle=g; //Sets the fille of your text here. In this case it is set to the gradient that was created above. But you could set it to Red, Green, Blue or whatever.

  ctx.fillText("This is some new and funny TEXT!",40,190);
</script>

На Amazon є посібник для початківців для http://www.sezon.com/HTML5-Canvas-Guide-Beginners-ebook/dp/B00JSFVY9O/ref=sr_1_4?ie=UTF8&qid=1398113376&sr=8-4&keywords=html5 + полотно + початківці, на які варто коштувати. Я придбав його пару днів тому, і це показало мені безліч простих прийомів, які були дуже корисними.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.