2015-06-07 10 views
6

Я пишу приложение для Windows 10 с использованием Win2D, и я пытаюсь нарисовать фигуру, которая динамически масштабируется, чтобы соответствовать любому тексту.Как вычислить размер фрагмента текста в Win2D

Что я хотел бы сделать, так это то, как большая конкретная строка будет с данным CanvasTextFormat, а затем использовать ее для установки размера фигуры.

Моя проблема: я не могу найти способ определить, насколько велика будет строка?

ответ

7

См ниже код для расчета требуемого размера (ищите «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

Я нашел свойство LayoutBounds из CanvasTextLayout быть более полезным для меня, чем DrawBounds. Возможно, и другие. –