@krka92

Как корректно вычислить ширину текста?

Как можно корректно вычислить ширину текста с помощью Windows API?
Шрифт НЕ моноширинный. Arial.
Например: Есть у меня какая-либо строка, пусть будет "Some string". Я вычисляю ширину с помощью функции GetTextExtentPoint32 - корректно. Вычисляю ширину для строки "11111" - результат оказывается больше реальной ширины.
Косяк воспроизвел только для Arial, но вариант "Не использовать Arial" - не подходит.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
@krka92 Автор вопроса
Использовал функцию DrawText с флагом DT_CALCRECT
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
function TCustomCanvas.TextWidth(const Text: string): Integer;
begin
  Result := TextExtent(Text).cX;
end;
function TCanvas.TextExtent(const Text: string): TSize;
begin
  RequiredState([csHandleValid, csFontValid]);
  Result.cX := 0;
  Result.cY := 0;
  Winapi.Windows.GetTextExtentPoint32(FHandle, Text, Length(Text), Result);
end;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы