Get the rectangle of a stringshape?

After fiddling around with Stringshape and similar classes, I couldn’t figure out how to determine the length (or better the bounding rect) of a stringshape before drawing it. Do you have any advice on how to do this?

You could create a temporay 1x1 picture to calculate the width and height of the string:

  Dim p as new Picture(1, 1, 32)
  p.Graphics.TextFont = strShape.TextFont
  p.Graphics.TextSize = strShape.TextSize
  p.Graphics.TextUnit = strShape.TextUnit

  width = p.Graphics.StringWidth(strShape.Text)
  height = p.Graphics.StringHeight(strShape.Text)

The position of the bounding rect could be tricky, cause it will depend on the settings of StringShape.HorizontalAlignment and StringShape.VerticalAlignment.

Usually I also do the following to keep things simple when working with StringShapes:

  strShape.HorizontalAlignment = StringShape.Alignment.Left
  strShape.VerticalAlignment = StringShape.Alignment.Top

Oh great! Thanks! I thought the picture would simply clip the stringshape.