2015-06-07 9 views
6

Ich schreibe eine Anwendung für Windows 10 mit Win2D und ich versuche, eine Form zu zeichnen, die dynamisch skaliert, um zu passen, was Text gerade darin ist.Wie berechnet man die Größe eines Stücks Text in Win2D

Was ich tun möchte, ist herauszufinden, wie groß eine bestimmte Zeichenfolge mit einem gegebenen CanvasTextFormat wäre und dann verwenden, um die Größe der Form festzulegen.

Mein Problem ist, dass ich keine Möglichkeit finden kann herauszufinden, wie groß die Saite sein wird?

Antwort

7

Siehe Code unten die gewünschte Größe (suchen Sie nach „theRectYouAreLookingFor“)

private void CanvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args) 
{ 
    CanvasDrawingSession drawingSession = args.DrawingSession; 
    float xLoc = 100.0f; 
    float yLoc = 100.0f; 
    CanvasTextFormat format = new CanvasTextFormat {FontSize = 30.0f, WordWrapping = CanvasWordWrapping.NoWrap};   
    CanvasTextLayout textLayout = new CanvasTextLayout(drawingSession, "Hello World!", format, 0.0f, 0.0f); 
    Rect theRectYouAreLookingFor = new Rect(xLoc + textLayout.DrawBounds.X, yLoc + textLayout.DrawBounds.Y, textLayout.DrawBounds.Width, textLayout.DrawBounds.Height); 
    drawingSession.DrawRectangle(theRectYouAreLookingFor, Colors.Green, 1.0f); 
    drawingSession.DrawTextLayout(textLayout, xLoc, yLoc, Colors.Yellow); 
} 
+0

zu berechnen habe ich die LayoutBounds Eigenschaft CanvasTextLayout finden mir nützlicher zu sein als DrawBounds. Vielleicht werden es auch andere tun. –