2010-12-09 48 views
0

Actuellement, j'utilise FormattedText.BuildGeometry() pour obtenir la géométrie du texte. D'abord, je dessine la géométrie du texte avec un stylo plus épais, puis je dessine le texte. L'effet final est que le texte semble avoir un contour.Comment dessiner un texte esquissé efficacement?

Mon problème est que la méthode BuildGeometry() prend beaucoup de temps. Y a-t-il un autre moyen de dessiner des contours de texte efficacement?

Répondre

1

Il y a quelques années quand je travaillais sur J2ME, j'utilise cette méthode pour faire du texte ont un certain contour (pseudo-code, mais il peut être facilement mis à jour à WPF):

setColor(outlineColor) 
drawText(x - 1, y, text) 
drawText(x + 1, y, text) 
drawText(x, y - 1, text) 
drawText(x, y + 1, text) 

setColor(textColor) 
drawText(x, y, text) 

(en supposant que vous voulez dessine du texte aux coordonnées x, y).

Je pense que dessiner le texte 4 fois plus peut être plus rapide qu'avec BuildGeometry.

+0

Le contour peut être de largeur variable; bonne idée cependant. Autre chose que tu veux suggérer? – Trainee4Life

+0

La seule autre option que je peux penser pour le moment est d'écrire votre propre effet qui réalise cela, mais ce ne sera pas trivial ou au moins essayer l'un des effets de .Net http://msdn.microsoft.com/fr us/library/system.windows.media.effects.aspx (qui ne sont pas obsolètes). Si vous connaissez HLSL (ou chanceux avec google), vous pouvez utiliser PixelShader avec un programme HLSL personnalisé. Désolé, je ne peux pas aider plus que cela. –