// получаем параметры клиентской области в пикселях
GetClientRect ( &rtWin ) ;
// переносим начало координат в середину физической области
dc.SetViewportOrg ( rtWin.right / 2 , rtWin.bottom / 2 ) ;
// устанавливаем флаг произвольной шкалы, как по оси X, так и по оси Y
dc.SetMapMode ( MM_ANISOTROPIC ) ;
// устанавливаем размеры логической области
dc.SetWindowExt ( n , n ) ;
// устанавливаем размеры физической области равными размерам клиентской области
// и изменяем направление оси Y
dc.SetViewportExt ( rtWin.right , -rtWin.bottom ) ;
dc.Rectangle ( 300 , 300 , -200 , -200 ) ; // рисуем прямоугольник
// рисуем оси координат
CPen penBlack ( PS_SOLID , 5 , RGB(0,0,0)) ; // объявляем сплошной чёрный карандаш
dc.SelectObject ( &penBlack ) ; // выбираем карандаш для использования
dc.MoveTo (-400 , 0 ) ; dc.LineTo ( 400 , 0 ) ; // рисуем ось X
dc.MoveTo ( 0 ,-400 ) ; dc.LineTo ( 0 , 400 ) ; // рисуем ось Y
// рисуем подписи осей координат
COLORREF cr = dc.GetPixel (-499 , 499 ) ; // определяем цвет фона окна
dc.SetBkColor ( cr ) ; // устанавливаем цвет фона текста
dc.TextOut (410 , 25 ,"X") ; // рисуем подпись оси X
dc.TextOut (-10 , 450 ,"Y") ; // рисуем подпись оси Y
}
Приведенный код выполняется в классе CMapeModeDlg при щелчке на кнопке IDC_PICTURE
В результате работы этого фрагмента кода в форме будет выведен следующий рисунок.
В классе CBrush определено четыре конструктора, прототипы которых имеют вид:
CBrush ( ) ; // создает пустой объект
CBrush ( COLORREF crColor ) ; // создает однотонную кисть
CBrush ( int nIndex , COLORREF crColor ) ; // создает кисть со штриховкой
CBrush ( CBitmap* pBitmap ) ; // создает кисть на основе битового массива размером 8x8
Параметры:
crColor определяет цвет штрихов
nIndex определяет стиль штриховки. Может принимать одно из следующих значений:
HS_HORIZONTAL горизонтальная штриховка
HS_VERTICAL вертикальная штриховка
HS_BDIAGONAL 45-градусная штриховка слева направо и сверху вниз
HS_FDIAGONAL 45-градусная штриховка слева направо и снизу вверх
HS_CROSS горизонтальная и вертикальная штриховка крест-накрест
HS_DIAGCROSS 45-градусная штриховка крест-накрест
pBitmap указатель на объект типа CBitmap, который определяет точечный рисунок, используемый в качестве шаблона
В том случае если создана кисть со штрихами, то в качестве цвета фона используется цвет фона текста, который задаётся с помощью функции SetBkColor.
Пример: рисуем прямоугольник в текущем диалоговом окне с помощью определённой нами кисти.
CClientDC dc ( this ) ; // контекст устройства - текущее диалоговое окно
COLORREF crYell = 0xFFFF ; // объявляем жёлтый цвет для фона
COLORREF crBlue = 0xFF0000 ; // объявляем синий цвет для штрихов
CBrush brush ( HS_CROSS , crBlue ) ; // объявляем кисть со штриховкой крест-накрест
dc.SetBkColor ( crYell ) ; // устанавливаем жёлтый фон
dc.SelectObject ( brush ) ; // выбираем кисть для использования
RECT rt = { 20 , 20 , 140 , 140 } ; // объявляем и инициализируем прямоугольник
dc.Rectangle ( &rt ) ; // рисуем прямоугольник
Структура LOGBRUSH определяет стиль, цвет, и образец физической кисти и объявлена в библиотеке MFC следующим образом:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.