Свойства, методы, события, типы, классы______________________1021

Х2 = 200;

Y2 = 150;

Imagel->Canvas->Brush->Color = cIRed;

Imagel->Canvas->TextRect (Rect(XI,Yl,X2,Y2) ,

X1+(X2-Xl-Imagel->Canvas->TextWidth(st) ) / 2,
Y1+(Y2-Yl-Imagel->Canvas->TextHeight(st)) / 2, st);

Приведенный код рисует в заданном месте канвы компонента Imagel красный
прямоугольник и внутри него в центре пишет методом TextRect текст, введен-
ный пользователем в окно редактирования Editl. Если текст оказывается
длиннее ширины прямоугольника, то он усекается. В данном примере будет
видна только середина длинного текста, так как текст выровнен по центру
прямоугольника.
2. Если в приведенном примере заменить оператор на

Imagel->Canvas->TextRect (Rect(Xl-5,Yl-5,Xl+Imagel->
Canvas->TextWidth(st)+5,
Yl+Imagel->Canvas->TextHeight(st)+5), XI, Yl, st);

то текст будет выводится полностью при любой его длине в красной прямоуго-
льной области, на 5 пикселей отступающей во все стороны от текста. Именно
этим отступом, делающим надпись более красивой, этот оператор отличается
от более простого оператора

TextOut(Xl,Yl,st) ;

использующего метод TextOut.

TextWidth

Возвращает длину в пикселях текста, который предполагается написать на
канве текущим шрифтом

Класс TCanvas

Прототип

int   fastcall TextWidth(const AnsiString Text);

Описание

Функция TextWidth возвращает длину в пикселях текста Text, который пред-
полагается написать на канве (см. Canvas) текущим шрифтом. Это позволяет пе-
ред выводом текста на канву определить размер надписи и расположить ее и дру-
гие элементы изображения наилучшим образом.

Имеется еще метод TextExtent. возвращающий одновременно и высоту, и
длину текста. Метод TextWidth возвращает то же, что TextExtent(Text).cx.

Примеры

String st = Editl->Text;

Canvas->TextOut(ClientWidth - Canvas->TextWight(st))/2,
Canvas->TextExtent(st).cy, st);

Эти операторы выводят на канву формы текст, набранный пользователем в
окне редактирования Editl, выравнивая его при любом шрифте по середине шири-
ны канвы и отступив одну строчку сверху.

См. также пример в описании метода TextRect.

TryLock

Блокирует канву, если она не была блокирована, не разрешая другим нитям
многопоточного приложения рисовать на ней