2009-07-08 6 views
2

J'ai un Canvas avec une traduction d'échelle appliquée en XAML. En utilisant DrawingContext je dessine des lignes sur le Canvas. Je dois maintenant ajouter du texte à l'écran. Je pensais avec un texte formaté que je pourrais appliquer une traduction, mais ni texte mis en forme ou DrawingContext accepte RenderTransform. Comment est-ce que j'applique une traduction d'échelle au texte ainsi elle contrecarrera la traduction d'échelle de la toile?Comment appliquez-vous une traduction d'échelle à un DrawingContext?

ftext = New FormattedText("N", CultureInfo.GetCultureInfo("en-us"), Windows.FlowDirection.LeftToRight, face, Me.DBFontSize, FalconDataBlock.Foreground) 
context.DrawText(ftext, .TargetLineInfo.EndAsWinPoint) 

Répondre

7

Dans la plupart des applications de l'interface utilisateur, au lieu d'utiliser un DrawingContext, la bonne chose à faire est peut-être ajouter un enfant TextBlock la toile, et changer la RenderTransform du TextBlock. Toutefois, en supposant que vous ayez une bonne raison d'utiliser DrawingContext, vous pouvez utiliser DrawingContext.PushTransform pour pousser la transformation dont vous avez besoin (échelle, traduction, etc.), juste avant d'appeler DrawText. Utilisez DrawingContext.Pop pour restaurer l'état antérieur une fois que vous avez terminé avec DrawText.