Контекст устройства. Работа с текстом. Диалоговое окно выбора цвета. Настройка режима отображения. Точечный рисунок. Класс CBitmap, страница 3

Назначение: определяет способ выравнивания текста, который рисуется с помощью функций TextOut и ExtTextOut. Определяет также способ использования текущих координат.

Синтаксис:

UINT GetTextAlign ( ) const ;

UINT SetTextAlign ( UINT nFlags ) ;

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

Параметры:

nFlagsопределяет способ выравнивания текста. Этот параметр может быть суммой одного или нескольких флагов из трёх категорий. Можно выбирать только один флаг из каждой категории.

Первая категория флагов определяет положение строки в горизонтальном направлении относительно x-координаты:

TA_CENTER                     координата определяет положение центра строки.

TA_LEFT                          координата определяет положение левого края строки (по умолчанию).

TA_RIGHT                        координата определяет положение правого края строки.

Вторая категория флагов определяет положение строки в вертикальном направлении относительно y-координаты:

TA_BASELINE                 координата определяет положение базовой линии строки.

TA_BOTTOM                   координата определяет положение нижнего края строки.

TA_TOP                            координата определяет положение верхнего края строки (по умолчанию).

Третья категория определяет, обновлены ли текущие координаты после вызова функции вывода текста:

TA_NOUPDATECP           не обновляет текущую координату (по умолчанию)

TA_UPDATECP                обновляет текущую x-координату. Новое положение находится с правой стороны рабочего прямоугольника. Когда этот флаг установлен, координаты, указанными в вызовах функции TextOut, не используются.

Пример рисования текста

Ниже приведён пример программы, которая в диалоговом окне изменяемого размера отображает синий заголовок на сером фоне, белый прямоугольник и красный текст внутри прямоугольника. Текст выходящий за границы прямоугольника отсекается. Вид диалогового окна приведён на рисунке.

Поскольку пользователю разрешено изменять размеры окна, то в программе предусмотрено масштабирование изображения – заголовок всегда располагается вверху экрана по центру, прямоугольник всегда занимает центральную четверть экрана, текст рисуется в центре экрана. Масштабирование изображения достигается следующими мерами:

Ø  Рисование осуществляется в объявленной функции DrawText члене класса диалогового окна CtextDlg.

Ø  Вызов функции в объявленной функции DrawText члене класса диалогового окна CtextDlg осуществляется в методе OnPaint, который вызывается при каждом изменении размеров экрана.

Ø  Размеры клиентской области окна определяются с помощью функции GetClientRect

void CTextDlg::OnPaint()       // Функция перерисовки окна

{

         DrawText () ;

}

void CTextDlg::DrawText()    // Функция рисования в окне

{

// объявление экземпляра класса CClientDC для работы с клиентской областью - текущего окна

         CClientDC dc ( this ) ;                                         // контекст устройства - текущее окно

         CRect ClientRec ;                                                // параметры клиентской области

         CString Title = "Заголовок";                             // объявление строки заголовка

         CString Text = "Пример текста в рамке";        // объявление строки текста

         COLORREF crBlue = RGB ( 0 , 0 , 255 );           // объявление синего цвета для текста

         COLORREF crGray = RGB ( 232 , 232 , 232);   // объявление серого цвета для фона

         COLORREF crRed  = RGB ( 255 , 0 , 0 );          // объявление красного цвета для текста

         COLORREF crWhite = 0x00FFFFFF ;               // объявление белого цвета для фона

         GetClientRect ( &ClientRec ) ;                            // получение параметров клиентской области

         int L=ClientRec.right ;                                        // ширина диалогового окна

         int H=ClientRec.bottom ;                                    // высота диалогового окна

         dc.SetBkColor ( crGray ) ;                                  // установка цвета фона

         dc.SetTextColor ( crBlue ) ;                                 // установка цвета текста