Come posso scrivere del testo su un elemento canvas HTML5?


150

È possibile scrivere testo su HTML5 canvas?


1
Consiglierei di leggere il <a href=" diveintohtml5.info/"> diveintohtml5 </ a > sito, ha il suo <a href=" diveintohtml5.info/canvas.html#text"> capitolo su text</a> . È un'ottima lettura.
Chelmertz,

Oltre alle altre risposte se desideri scrivere un testo utilizzando excanvas (per il supporto IE) avrai bisogno di uno script aggiuntivo, disponibile qui: code.google.com/p/explorercanvas/issues/detail?id=6 Il download predefinito ( code.google.com/p/explorercanvas/downloads/list ) non include il metodo fillText e strokeText.
Castrohenge,

2
@IvanCastellanos Hai trovato risultati di ricerca pertinenti? Potrebbe essere utile pubblicarli qui, se ne hai trovato uno.
Anderson Green,

2
@IvanCastellanos - questa domanda (almeno per me) ora arriva in alto per "testo HTML canvas" su Google. Non è questo lo scopo di Stack Overflow?
Colincameron,

Sì, è facile farlo su Canvas. Vorrei aggiungere altro al tuo post in modo che tu possa mostrare alcuni esempi di cosa hai provato e cosa non hai provato. Solo la domanda non è poi così vantaggiosa per Stackoverflow.com
Doug Hauf,

Risposte:


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
C'è un modo per ottenere la larghezza e la dimensione del carattere in modo che possiamo centrarlo? (Contenuto dinamico)
Oliver Dixon il

1
assume: la larghezza della tela-200, altezza: 100 orizzontale : ctx.textAlign = 'center' ctx.fillText ('Hello', 100 , 10) vertical : ctx.textBaseline = 'middle' ctx.fillText ('Hello', 10 , 50 )
tomision

Documentazione:fillText
jpaugh

7

Disegno di testo su una tela

markup:

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

Script (con poche opzioni diverse):

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

Controlla la documentazione MDN e questo esempio JSFiddle .


6

Canvassupporto di testo è in realtà abbastanza buono - si può controllare font, size, color, horizontal alignment, vertical alignment, e si può anche ottenere metriche del testo per ottenere la larghezza del testo in pixel. Inoltre, è anche possibile utilizzare tela transformsper rotate, stretche anche invertil testo.


5

È davvero facile scrivere del testo su una tela. Non era chiaro se si desidera che qualcuno inserisca del testo nella pagina HTML e che il testo venga visualizzato nell'area di disegno o se si stesse utilizzando JavaScript per scrivere le informazioni sullo schermo.

Il codice seguente scriverà del testo in diversi tipi di carattere e formati sulla tela. Puoi modificarlo come desideri testare altri aspetti della scrittura su una 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. 

È possibile posizionare il tag ID canvas nel codice HTML e quindi fare riferimento al nome oppure è possibile creare il canvas nel codice JavaScript. Penso che per la maggior parte vedo il <canvas>tag nel codice HTML e, a volte, lo vedo creato dinamicamente nel codice JavaScript stesso.

Codice:

  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

Dipende da cosa vuoi farci immagino. Se vuoi solo scrivere del testo normale, puoi usarlo .fillText().


3

Sì, certo, puoi scrivere un testo su tela con facilità e puoi impostare il nome, la dimensione e il colore del carattere. Esistono due metodi per creare un testo su Canvas, ovvero fillText () e strokeText () . Il metodo fillText () viene utilizzato per creare un testo che può essere riempito solo con il colore, mentre trattoText () viene utilizzato per creare un testo a cui può essere assegnato solo un colore di contorno. Quindi, se vogliamo costruire un testo pieno di colore e di colore di contorno, dobbiamo usare entrambi.

qui l'esempio completo, come scrivere testo su 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>

Ecco la demo per questo, e puoi provare te stesso per qualsiasi modifica: http://okeschool.com/examples/canvas/html5-canvas-text-color


1

Ho trovato un buon tutorial su oreilly.com .

Codice di esempio:

<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

È facile scrivere del testo su una tela. Diciamo che la tua tela è dichiarata come di seguito.

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

Questa parte del codice restituisce una variabile in tela che è una rappresentazione della tela in HTML.

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

Il codice seguente restituisce i metodi per disegnare linee, testo, riempimenti sulla 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>

C'è una guida per principianti su Amazon per il 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 + tela + principianti che vale la pena. L'ho acquistato un paio di giorni fa e mi ha mostrato molte tecniche semplici che sono state molto utili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.