Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.19;
Скачать: CL | DM;

Вниз

Как вычислить длину строки в пикселях?   Найти похожие ветки 

 
ed18 ©   (2003-05-06 10:24) [0]

Как вычислить длину строки в пикселях? Я пробовал мазать на канвас и через TextWidth определять но почемуто получил не точный результат(Canvas.size и Canvas.Name выставлял}. А вобще хотелось бы без Canvas"ов вычислять.


 
Anatoly Podgoretsky ©   (2003-05-06 11:25) [1]

Вычисляй через TCanvas.TextWidth


 
PVOzerski ©   (2003-05-06 11:42) [2]

В свое время я написал такое:

function GetSize(DC:tHandle;s:string):tSize;
var
size:tSize;
begin
GetTextExtentPoint(DC,pChar(s),length(s),Size);
GetTextExtentPoint32(DC,pChar(s),length(s),Result);
if Result.cx<Size.cx then
Result.cx:=Size.cx;
if Result.cy<Size.cy then
Result.cy:=Size.cy;
end;

Здесь DC, конечно, скорее всего, Canvas.Handle (ну, или результат GetDC и т.п.). А совсем без Canvas нельзя - ведь интересующее Вас значение зависит от свойств выбранного фонта, который может быть разным в разных контролах.

Поясню смысл такой "загадочной" конструкции. Мой опыт показал, что для TrueType правильнее результат дает GetTextExtentPoint32, а для шрифтов старого типа - GetTextExtentPoint. По-хорошему бы надо проверять, принадлежит ли фонт к TrueType, но моя задача решалась и выше показанным путем, тем более что у меня не было ни малейшей уверенности, что поведение этих функций одинаково в разных версиях Виндов (я работал в NT4).



Страницы: 1 вся ветка

Текущий архив: 2003.05.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
4-59989
biocron
2003-03-18 12:49
2003.05.19
Отключить дисковод так что бы не было ошибки


1-59696
Chery
2003-05-07 18:09
2003.05.19
Вызов функции из Dll


1-59690
Dracula2000
2003-05-07 11:02
2003.05.19
Вызов форм разных стилей


1-59675
anbezr
2003-05-07 14:54
2003.05.19
Можно ли компилятор Delphi сделать критичным к регистру символов


6-59835
SLYplix
2003-03-20 16:06
2003.05.19
Как узнать состояние Интернет?