Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
Внизсколько пикселов займет срока в 10 символов? Найти похожие ветки
← →
bkv (2002-12-10 16:42) [0]Подскажте,
как узнать сколько пикселов займет срока в 10 символов?
Заранее благодарен
← →
MBo (2002-12-10 16:44) [1]canvas.textwitdth
← →
Игорь Шевченко (2002-12-10 16:44) [2]uses
TypInfo;
function GetTextWidthInPixels(AText: string; AControl: TControl): integer;
var
propInfo: PPropInfo;
thisFont: TFont;
begin
Result := 0;
propInfo := GetPropInfo(AControl.ClassInfo, "Font");
if propInfo <> nil then begin
thisFont := TFont(GetObjectProp(AControl, "Font"));
if Assigned(thisFont) then
with TControlCanvas.Create do
try
Control := AControl;
Font.Assign(thisFont);
Result := TextWidth(AText);
finally
Free;
end;
end;
end;
← →
han_malign (2002-12-10 16:46) [3]TCanvas:
TextExtent
TextHeight
TextRect
TextWidth
- не в контексте Canvas/DC - смысла не имеет
← →
han_malign (2002-12-10 16:48) [4]Игорь Шевченко © (10.12.02 16:44)
- тонко... :))))))
← →
Skier (2002-12-10 17:04) [5]Повторение - мать учения :))
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1039161363&n=0
← →
Subfire (2002-12-10 17:11) [6]Вообще странно...должен ведь существовуать способ, чтобы по двум параметрам - строчке и шрифту - однозначно определить длинну строчки в пикселах, вообще абстрагируясь от объектов и контролов...
Т.е. пользовательская процедура получающая на входе строку и TFont и возвращающая длинну строчки в пикселях.
Динамически создавать в ней объект и в нем смотреть длину не предлагать - это то же что и GetTextWidthInPixels by Игорь Шевченко, только в профил...
Кстати, его вариант пока самый лучший! -)
← →
VaS (2002-12-10 17:19) [7]
type
THackControl = class(TControl)
end;
function GetTextWidthInPixels(AText: string; AControl: TControl): integer;
begin
if AControl <> nil then
with TControlCanvas.Create do
try
Control := AControl;
Font.Assign(THackControl(AControl).Font);
Result:=TextWidth(AText);
finally
Free;
end
else
Result:=0;
end;
Не скажу, что сильно горжусь данной аналогией дружественного класса, но он должен быть побыстрее варианта Игоря Шевченко.
← →
Игорь Шевченко (2002-12-10 17:43) [8]by the way - это не мой вариант. Это просто кусок из проекта.
Это из http://www.lmc-mediaagentur.de/dpool.htm - там много всего интересного. И бесплатного.
← →
Subfire (2002-12-10 17:49) [9]Так....разбираем...
GetTextExtentPoint32();
дествительно позволяет узнать длину шрифта...если ей передать контекст устройства...
К тому же она использует текущий шрифт...
Т.е. решение реально одно - сменить текущий шрифт, вычислить, вернуть шрифт...Криво.
← →
Skier (2002-12-10 17:52) [10]>Subfire
So...What"s your point ? :))
← →
Игорь Шевченко (2002-12-10 18:41) [11]Subfire © (10.12.02 17:49)
К вашему сведению - ширина строки в пикселах зависит как раз от шрифта, которым она отображается.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c