Текст
Следующий фрагмент кода демонстрирует использование методов, обеспечивающих вывод текста на поверхность формы. Приведенная функция обработки события OnPaint закрашивает верхнюю половину окна белым, нижнюю – голубым цветом, затем в центре окна, по границе закрашенных областей, выводит текст (рис. 3.7).
void _fastcall TForml::FormPaint(TObject *Sender) { AnsiString ms = "Borland C++Builder"; TRect aRect; int x,y; // точка, от которой будет выведен текст // верхнюю половину окна красим белым aRect = Rect(0.0,ClientWidth,ClientHeight/2); Canvas › Brush › Color = clWhite; Canvas › FillRect(aRect); // нижнюю половину окна красим голубым aRect = Rect(0,ClientHeight/2,ClientWidth,ClientHeight); Canvas › Brush › Color = clSkyBlue; Canvas › FillRect(aRect); Canvas › Font › Name = "Times New Roman"; Canvas › Font › Size = 24; // Canvas › Font › Style = TFontStyles ()" fsBold " fsItalic; // текст разместим в центре окна х = (ClientWidth – Canvas-XTextWidth(ms)) /2; у = ClientHeight/2 – Canvas-XTextHeight(ms) /2; Canvas › Brush › Style = bsClear; // область вывода текста // не закрашивать Canvas › Font › Color = clBlack; Canvas › TextOutA(x,y,ms); // вывести текст }
Рис. 3.7. Вывод текста
Иногда требуется вывести какой-либо текст после сообщения, длина которого во время разработки программы неизвестна. В этом случае необходимо знать координаты правой границы области выведенного текста. Координаты правой границы текста, выведенного методом TextOutA, можно получить, обратившись к свойству penPos.
Следующий фрагмент кода демонстрирует возможность вывода строки текста при помощи двух инструкций TextOutA:
Canvas › TextOutA(10.10,"Borland "); Canvas › TextOutA( Canvas › PenPos.x, Canvas › PenPos.y, "C++Builder");