Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-74923
JOHNY C
2002-12-02 08:20
2002.12.23
набор команды (продолжение)


1-74657
Andy BitOff
2002-12-12 23:00
2002.12.23
Как обновить форму?


14-74995
Ketmar
2002-12-03 21:13
2002.12.23
test


1-74748
Andrey V.
2002-12-14 20:46
2002.12.23
TMenuItem


1-74693
bambina
2002-12-12 14:24
2002.12.23
TSaveDialog





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский