2009-04-05 11 views
12

Ho sperimentato l'utilizzo del tag <canvas> per disegnare diagrammi e diagrammi semplici e finora è abbastanza facile lavorare con. Ho pensato un problema. Non riesco a capire come disegnare il testo su un <canvas> in Safari. In Firefox 3.0, posso fare questo:Come si disegna un testo su un tag <canvas> in Safari

Chart.prototype.drawTextCentered = function(context, text, x, y, font, color) { 
    if (context.mozDrawText) { 
    context.save(); 
    context.fillStyle = color; 
    context.mozTextStyle = font; 
    x -= 0.5 * context.mozMeasureText(text); 
    context.translate(x, y); 
    context.mozDrawText(text); 
    context.restore(); 
    } 
} 

ho visto riferimento ad un metodo fillText() in docs Safari di Apple, ma non sembra essere supportato in Safari 3.2. Questo è solo qualcosa che al momento manca, o è un segreto ben tenuto?

+0

FWIW, 'mozDrawText' è deprecato in favore di' fillText'. Vedi http://developer.mozilla.org/en/Drawing_text_using_a_canvas#mozDrawText.28.29 –

+0

Sì, l'ho visto ma non è implementato in Firefox 3.0, solo 3.1 che è ancora in beta. –

risposta

14

Non credo che Safari 3.2 supporti il ​​rendering del testo nell'area di disegno.

Secondo this blog, Safari 4 beta supporta il testo in sospeso sull'area di disegno, in base allo HTML 5 canvas text APIs.

Edit: mi hanno confermato che il seguente frammento funziona in Safari 4 Beta:

<canvas id="canvas"></canvas> 
<script> 
    var context = document.getElementById("canvas").getContext("2d"); 
    context.fillText("Hello, world!", 10, 10); 
</script> 
+0

Cool, posso vivere senza testo fino a quando non verrà rilasciato Safari 4. –

+0

Che dire dell'iPhone dal 14/12/2009? Che cosa supporta? – Neo42

+0

E che dire di iPad 3 con Safari 5.1? Supporta il metodo fillText con l'argomento maxWidth? – Slenkra

4

Questo non è l'ideale, e sembra che si sta bene in attesa, ma per riferimento, c'è una biblioteca chiamato strokeText che esegue il rendering del proprio carattere. Funziona in Firefox 1.5+, Opera 9+, Safari (non so quali versioni) e IE6 + (usando VML invece di canvas).

+0

Cool, ma sto usando' 'per cose puramente interne in questo momento e tutti abbiamo installato Firefox (e alcuni sono utilizzando Safari 4 beta). –

0

Sto usando il tag <canvas> per disegnare il logo di Facebook, ma l'immagine, il testo è allungato.

<div class="content1"> 
    <canvas id = "e" class="myCanvas"> 
    <script> 
     var canvas = document.getElementById("e"); 
     var context = canvas.getContext("2d"); 
     context.fillStyle = "white"; 
     context.font = "normal 64px Facebook Letter Faces"; 
     context.fillText("facebook",10, 100); 
    </script> 
    FACEBOOK 
    </canvas> 
</div> 

file CSS:

.content1 
{ 
    float:left; 
    position:relative; 
    width:180px; 
    height:120px; 
} 

.myCanvas 
{ 
    float:right; 
    position:relative; 
    width:170px; 
    height:60px; 
    margin-right:5px; 
    margin-top:70px; 
    background-color:#044692; 

} 
+0

Puoi aggiungere un [violino] (http://jsfiddle.net) a quello? – JNF

+0

Qui il suo violino http://jsfiddle.net/mukhila/sVTWJ/ Grazie – Asokan

Problemi correlati