Como escrever texto em um elemento de tela HTML5?


150

É possível escrever texto em HTML5 canvas?


1
Eu recomendaria a leitura do <a href=" diveintohtml5.info/"> diveintohtml5 </ a > site, ele tem seu próprio <a href=" diveintohtml5.info/canvas.html#text"> capítulo sobre text</a> . É uma leitura muito boa.
Chelmertz 13/09/10

Além das outras respostas, se você quiser escrever um texto usando excanvas (para suporte ao IE), precisará de um script adicional, disponível aqui: code.google.com/p/explorercanvas/issues/detail?id=6 O download padrão ( code.google.com/p/explorercanvas/downloads/list ) não inclui os métodos fillText e strokeText.
Castrohenge 14/09

2
@IvanCastellanos Encontrou resultados de pesquisa relevantes? Pode ser útil publicá-las aqui, se você encontrou alguma.
Anderson Green

2
@IvanCastellanos - esta questão (pelo menos para mim) agora aparece no topo de "HTML canvas text" no Google. Esse não é o objetivo do Stack Overflow?
Colinameron

Sim, é fácil fazê-lo no Canvas. Eu acrescentaria mais à sua postagem para que você possa mostrar alguns exemplos do que você tentou e do que não tentou. Apenas a questão não é realmente tão benéfica para Stackoverflow.com
Doug Hauf

Respostas:


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
Existe alguma maneira de obter a largura e o tamanho da fonte para que possamos centralizá-la? (Conteúdo dinâmico)
Oliver Dixon

1
assume: sua tela width-200, height: 100 horizontal : ctx.textAlign = 'center' ctx.fillText ('Hello', 100 , 10) vertical : ctx.textBaseline = 'middle' ctx.fillText ('Hello', 10 , 50 )
tomision 18/08/16

Documentação:fillText
jpaugh 9/01/19

7

Desenho de texto em uma tela

Marcação:

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

Script (com poucas opções diferentes):

<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>

Confira a documentação do MDN e este exemplo do JSFiddle .


6

Canvassuporte de texto é realmente muito bom - você pode controlar font, size, color, horizontal alignment, vertical alignment, e você também pode obter métricas de texto para obter a largura do texto em pixels. Além disso, você também pode usar lona transformspara rotate, stretche até mesmo inverttexto.


5

É realmente fácil escrever texto em uma tela. Não ficou claro se você deseja que alguém insira texto na página HTML e faça com que esse texto apareça na tela ou se você usaria JavaScript para gravar as informações na tela.

O código a seguir gravará algum texto em diferentes fontes e formatos na sua tela. Você pode modificar isso como deseja testar outros aspectos da gravação em uma tela.

 <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. 

Você pode colocar a tag de ID da tela no HTML e fazer referência ao nome ou criar a tela no código JavaScript. Eu acho que, na maioria das vezes, vejo a <canvas>tag no código HTML e, de vez em quando, ela é criada dinamicamente no próprio código JavaScript.

Código:

  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

Depende do que você quer fazer com isso, eu acho. Se você quiser apenas escrever um texto normal, pode usar .fillText().


3

Sim, é claro que você pode escrever um texto na tela com facilidade e definir o nome da fonte, o tamanho e a cor da fonte. Existem dois métodos para criar um texto no Canvas, como fillText () e strokeText () . O método fillText () é usado para criar um texto que só pode ser preenchido com cores, enquanto que strokeText () é usado para criar um texto que pode receber apenas uma cor de contorno. Portanto, se queremos criar um texto que seja preenchido com cores e contenha cores de contorno, devemos usar os dois.

aqui o exemplo completo, como escrever texto na tela:

<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>

Aqui está a demonstração disso, e você pode tentar por qualquer modificação: http://okeschool.com/examples/canvas/html5-canvas-text-color


1

Encontrei um bom tutorial em oreilly.com .

Código de exemplo:

<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>

cortesia: @Ashish Nautiyal


1

É fácil escrever texto em uma tela. Vamos dizer que sua tela é declarada como abaixo.

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

Essa parte do código retorna uma variável na tela, que é uma representação da sua tela em HTML.

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

O código a seguir retorna os métodos para desenhar linhas, texto e preenchimentos na tela.

  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>

Há um guia para iniciantes na Amazon para o kindle http://www.amazon.com/HTML5-Canvas-Guide-Beginners-ebook/dp/B00JSFVY9O/ref=sr_1_4?ie=UTF8&qid=1398113376&sr=8-4&keywords=html5 + canvas + iniciantes que vale bem o dinheiro. Comprei-o há alguns dias e me mostrou muitas técnicas simples que eram muito úteis.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.