Как получить ширину строки в GDI+

Рейтинг: 0Ответов: 1Опубликовано: 20.04.2015

Как в GDI+ сделать аналог функции TextWidth? Пытаюсь адаптироваль для Delphi найденную тут функцию, он она падает на MeasureCharacterRanges с ошибкой "(GDI+ Error) One of the arguments passed to the method was not valid.". Как это исправить?

Function MeasureDisplayStringWidth(Graphics: IGPGraphics; Text: String; Font: IGPFont): Extended;
Var
  StringFormat: IGPStringFormat;
  R: TGPRectF;
  CharRanges: IGPCharacterRanges;
  CharRange: TGPCharacterRange;
  Regions: IGPRegions;
Begin
  R.Initialize(0, 0, 1000, 1000);
  CharRanges := TGPArray<TGPCharacterRange>.Create(1);
  CharRange.Initialize(0, 2);
  CharRanges[0] := CharRange;
  StringFormat:= TGPStringFormat.Create;
  StringFormat.SetMeasurableCharacterRanges(CharRanges);
  Regions := Graphics.MeasureCharacterRanges(Text, Font, R, StringFormat);
  Regions[0].GetBounds(R, Graphics);
  Result:=R.Right+1;
End;

Ответы

Ответов пока нет.