Estoy escribiendo una aplicación para Windows 10 usando Win2D y estoy tratando de dibujar una forma que se escala dinámicamente para adaptarse a cualquier texto que se encuentre en ella.
Lo que me gustaría hacer es calcular qué tan grande sería una cadena en particular con un CanvasTextFormat dado y luego usarlo para establecer el tamaño de la forma.
Mi problema es que parece que no puedo encontrar una manera de calcular qué tan grande será la cuerda.
Consulte el código a continuación para calcular el tamaño requerido (busque "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); }Si crea un CanvasTextLayout con un ancho requestedWidth de 0 , como en el ejemplo de Michael Vach , es posible que desee deshabilitar Word Wrap en Win2D 1.23. Me gusta:
var textLayout = new CanvasTextLayout(drawingSession, "Hello World!", fontFormat, 0.0f, 0.0f) { WordWrapping = CanvasWordWrapping.NoWrap }; var completeOuterSize = textLayout.LayoutBounds(No tengo permitido comentar)