2013-01-02 2 views
1

Comment puis-je donner un contour à un texte en JavaScript lorsque je dessine sur le Canevas? Voir l'image ci-dessous de ce que j'essaie de faire.Créer un contour de texte sur une toile en javascript

enter image description here

+0

J'ai essayé l'ombre, voir [jsFiddler] (http : //jsfiddle.net/NMEMa/) mais l'ombre est juste trop mince. J'ai également essayé deux champs de texte (ou plus) les uns derrière les autres, mais cela n'a pas fonctionné non plus. Vous avez d'autres idées? –

+1

Quelqu'un m'a montré la [solution] (http://jsfiddle.net/ybJM4/4/) –

Répondre

0

Vous pouvez essayer d'utiliser strokeText pour caresser les grandes lignes:

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

context.font = "bold 34px sans-serif"; 
context.fillText('office space', 50, 60); 
context.strokeStyle = 'white'; 
context.lineWidth = 2; 
context.strokeText('office space', 50, 60); 
+0

C'est quelque chose, mais pas tout à fait ce que je cherche. Voir ici: [jsFiddle] (http://jsfiddle.net/NMEMa/) –

6

Daniel Langh m'a montré la solution:

var txt = 'Hello World!'; 
var x = 30, 
    y = 50; 

context.font = "40px Helvetica"; 

context.strokeStyle = 'white'; 

// setup these to match your needs 
context.miterLimit = 2; 
context.lineJoin = 'circle'; 

// draw an outline, then filled 
context.lineWidth = 7; 
context.strokeText(txt, x, y); 
context.lineWidth = 1; 
context.fillText(txt, x, y); 
+2

J'avais le même problème et j'ai vu cette réponse. L'option 'miterLimit' a corrigé les pics de ligne, mais j'étais plutôt satisfait avec' context.lineJoin = 'round'; ' – Hans

+0

OUI! Je suis tellement content d'avoir résolu le problème des «pointes» avec un paramètre aussi simple. J'ai écrit une fonction qui produisait de gros traits lisses mais qui nécessitait des temps absurdes en fonction du navigateur. Les pointes d'AVC ont disparu! :) – user24601