Como você aplicar uma escala de tradução a um DrawingContext?
Pergunta
Eu tenho um Canvas
com uma tradução de escala aplicado em XAML. Usando DrawingContext
eu desenhar linhas sobre o Canvas
. Agora eu preciso adicionar texto para a tela. Pensei com texto formatado eu poderia aplicar uma tradução, mas nenhum texto formatado ou DrawingContext
aceita RenderTransform
. Como posso aplicar uma tradução escala para o texto assim que vai combater a tradução escala da tela?
ftext = New FormattedText("N", CultureInfo.GetCultureInfo("en-us"), Windows.FlowDirection.LeftToRight, face, Me.DBFontSize, FalconDataBlock.Foreground)
context.DrawText(ftext, .TargetLineInfo.EndAsWinPoint)
Solução
Na maioria dos aplicativos de interface do usuário, em vez de usar um DrawingContext, a coisa certa a fazer poderia ser a de adicionar um TextBlock criança para a tela, e altere RenderTransform do TextBlock.
No entanto, supondo que você tenha uma boa razão para usar um DrawingContext, você poderia usar DrawingContext.PushTransform para empurrar a transformar o que você precisa (escala, tradução, etc.), pouco antes de você invocar DrawText. Use DrawingContext.Pop para restaurar o estado anterior depois que você fez com DrawText.