│ │
TPen │ │ Цвета и стили линий
│ │
TRegion │ │ Контуры и области фигур
│ │
Классы графического контекста
В программах OWL функциям GDI не передается дескриптор контекст устройства. Вместо этого вызываются функции, являющиеся элементами контекста.
Процесс использования класса контекста устройства включает четыре шага:
1. Получите или создайте объект контекста устройства.
2. Создайте графический объект и выберите его в контекст устройства ( функция SelectObject ).
3. Вызовите требуемые функции для объекта контекста устройства.
4. Восстановите первоначальные графические объекты, выбранные в контекст устройства.
Таблица
Классы контекста устройства
────────────┬───────────┬───────────────────────────────
Класс │ Файл │ Назначение
│ заголовка │
────────────┼───────────┼───────────────────────────────
TDC │ DC.H │ Базовый класc для других клас│ │сов контекста устройства; ин-
│ │капсулирует функции GDI
│ │
TIC │ │ Информационный контекст уст│ │ройства
│ │
TWindowDC │ │ Обеспечивает доступ к окну
│ │
TScreenDC │ │ Обеспечивает доступ ко всему
│ │экрану
│ │
TDesktop │ │ Рисование в клиентной области
│ │"рабочего стола"
│ │
TClientDC │ │ Рисование в клиентной области
│ │окна
│ │
TPaintDC │ │ Рисование в функции Paint
│ │
TMemoryDC │ │ Рисование в битовой матрице
│ │вне экрана
│ │
TDibDC │ │ Обеспечивает доступ к битовым
│ │матрицам, не зависящим от уст│ │ройства
│ │
TMetaFileDC│C C │ Обеспечивает доступ к контек│ │сту метафайла
│ │
TPrintDC │ │ Обеспечивает доступ к принте│ │ру
│ │
/* ------------------------------------------------------- *
QwlMain : GDI
* ------------------------------------------------------- */
#include <owl\applicat.h>
#include <owl\framewin.h>
#include <owl\dc.h>
class TMyWin: public TFrameWindow
{
public:
TMyWin( TWindow *parent, const char far* title):
TFrameWindow( parent, title ), TWindow ( parent, title ) {};
virtual void Paint( TDC& dc, BOOL erase, TRect& rect );
virtual void GetWindowClass ( WNDCLASS& wc );
};
// --------------------------------------------------------void
TMyWin::Paint ( TDC& dc, BOOL /*erase*/, TRect& /*rect*/ )
{
TColor colorP ( 255,0,0 );
TPen pen1 ( colorP ,2, PS_SOLID );
TPen pen2 ( TColor::LtBlue, 1, PS_DASHDOT );
TColor colorB ( 0,255,0 );
TBrush brush ( colorB );
dc.SelectObject ( pen1 ); // red line
dc.Rectangle ( 10,10,100, 200 );
dc.RestorePen ();
dc.SelectObject ( pen2 );
dc.SelectObject ( brush ); // green brush
dc.Ellipse ( 25,25, 80, 160 );
dc.RestorePen ();
dc.RestoreBrush ();
}
// --------------------------------------------------------void TMyWin::GetWindowClass ( WNDCLASS& wc )
{
TFrameWindow::GetWindowClass ( wc );
wc.hbrBackground = ( HBRUSH ) GetStockObject ( BLACK_BRUSH );
}
// --------------------------------------------------------class TMyApp: public TApplication
{
public:
TMyApp( const char far* name ):TApplication( name ) {};
void InitMainWindow ();
};
// --------------------------------------------------------void
TMyApp::InitMainWindow ()
{
MainWindow = new TMyWin ( 0, "Painting" );
}
#pragma argsused
int
OwlMain ( int argc , char* argv[] )
{
TMyApp App ( "Paint" );
return App.Run();
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.