Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Основные этапы и функции работы с GDI объектами

Работа добавлена на сайт samzan.net:


СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ И ОС

1.Основные этапы и функции работы с GDI -объектами.

GDIGraphic Device Interface – интерфейс графических устройств – набор функций и объектов, которые позволяют создавать изображение.

К графическим объектам относятся:

1) битовые массивы (bitmaps) – прямоугольные массивы точек, формирующие растровые изображения;

2) перья, или карандаши (pens) – задают параметры рисования линий;

3) кисти (brushes) – задают параметры заливки замкнутых фигур;

4) шрифты (fonts) – задают параметры вывода текста;

5) регионы (regions) – области окна, которые могут быть ограничены прямоугольником, многоугольником, эллипсом или их комбинацией для выполнения операции заполнения, заливки, инверсии и т.п. ;

6) логические палитры (logical palettes) – осуществляют интерфейс между приложением и цветным устройством вывода, содержат список цветов, необходимых приложению;

7) контуры (paths) – используются для заполнения или выделения контура различных фигур.

Одна из главных особенностей Win32 API – независимость графического вывода от устройства.

Она обеспечивается с помощью объекта Windows, называемого контекстом устройства.

Контекст устройства – структура данных, которая содержит информацию о параметрах рисования для некоторого графического устройства (например, экрана или принтера).

Win32 API определяет четыре типа контекста устройства:

1) для экрана – обеспечивает операции рисования непосредственно на экране;

2) для принтера – обеспечивает операции рисования на принтере или плоттере;

3) для объектов в памяти – обеспечивает операции рисования без непосредственного вывода на экран;

4) информационный – обеспечивает получение данных об устройстве.

Общий контекст устройства:

1) создается вызовом функций BeginPaint() (для сообщения WM_PAINT) и GetDC() или GetDCEx() (для других сообщений);

2) освобождается вызовом функций EndPaint() (для WM_PAINT) и ReleaseDC() (для других).

Перо – GDI-объект, который используется для определения типа и цвета линий или границ замкнутых фигур.

Создание пера: HPEN CreatePen(int стиль пера, int толщина пера, цвет)

Инициализирующая функция (например, CreatePen()) создает структуру в динамической памяти.

После работы с GDI-объектом память необходимо освободить: BOOL DeleteObject(HGDIOBJ);

Кисть – GDI-объект, который используется для определения типа и цвета заливки внутренних областей замкнутых фигур.

По умолчанию кисть имеет белый цвет.

Создание кисти: HBRUSH CreateSolidBrush(цвет);

HBRUSH  CreateHatchBrush(стиль штриховки, цвет);

HBRUSH CreatePatternBrush(дескриптор рисунка с растровым изображением);

Шрифт – GDI-объект, который определяет вид выводимых символов.

Информация о шрифте представляется в виде структуры LOGFONT.

struct tagLOGFONT {

  LONG lfHeight;              

  LONG lfWidth;

  BYTE lfItalic;                  

  BYTE lfUnderline;         

} LOGFONT;

Создание шрифта: HFONT CreateFontIndirect(CONST LOGFONT);

Создание шрифта с использованием функции CreateFont(): HFONT CreateFont( параметры);

ОС Windows работает со шрифтами трех типов:

1) растровые: каждый символ хранится в виде растра (битового массива).

2) векторные: хранят для каждого символа  отдельные координаты концов отрезков, из которых состоит соответствующий символ.

3) шрифты TrueType: содержат информацию о линиях и командах изгиба, а также настроечную информацию (hints) для точного отображения символа.

Палитра – GDI-объект, который служит для замены цветов, которые требует приложение, цветами, которые требует устройство.

Информация о палитре хранится в виде структуры LOGPALETTE.

HPALETTE CreatePalette(CONST LOGPALETTE);

Регион – GDI-объект, который представляет собой совокупность прямоугольных и эллиптических областей.

HRGN CreateRectRgn(int x1, int y1, int x2, int y2);

HRGN CreateEllipticRgn(int x1, int y1, int x2, int y2);

x1, y1, x2, y2 – координаты левого верхнего и правого нижнего угла прямоугольника.

HRGN CreatePolygonRgn(CONST POINT *lpPoints, int nCount, int nFillMode);

Битовый массив (битовая карта) – GDI-объект, который используется для создания прямоугольных изображений (bmp).

При создании битовой карты необходимо:

1) объявить дескриптор битовой карты (HBITMAP или HANDLE);

2) инициализировать или создать пустое растровое изображение

3) создать совместный контекст устройства;

4) нарисовать или скопировать выбранное растровое изображение в экранный контекст устройства помощью его функций.

Загрузка битовой карты.

hbitmap=LoadImage(NULL, "tiger1.bmp", LR_LOADFROMFILE);

СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ И ОС

2.Этапы создания простейшего оконного приложения с использованием функций Win32 API

Любое приложение Win32 должно иметь функцию WinMain. Синтаксис функции WinMain выглядит следующим образом:  int WINAPI WinMain();

Наряду с функцией WinMain, в каждом приложении Win32 также должна быть определена еще одна функция, обычно называемая WndProc и представляющая собой оконную процедуру.Синтаксис функции WndProc выглядит следующим образом: LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

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

Этапы создания:

1)Для начала создается внутри функции WinMain структура класса окна типа WNDCLASSEX.Эта структура содержит информацию об окне, такую как используемые в приложении значки, цвет фона окна, отображаемое в заголовке окна название, имя функции процедуры окна и т.д.

2)После того как класс окна будет создан, необходимо зарегистрировать его функцией RegisterClassEx, которой следует передать структуру класса окна в качестве аргумента.

3) После того как класс будет зарегистрирован создается окна при помощи функции CreateWindow. Эта функция возвращает объект HWND, являющийся дескриптором окна.

4) После того как окно будет создано, его можно вывести на экран с помощью следующего кода:

ShowWindow(hWnd,  nCmdShow);

UpdateWindow(hWnd);

5) На последнем этапе в функции WinMain реализуется цикл обработки сообщений.Назначением этого цикла является прослушивание сообщений, посылаемых операционной системой.При получении приложением сообщения оно передается функции WndProc на обработку.

СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ И ОС

3.Схема работы со стандартными элементами управления Windows при программировании на MS Visual C++ с использованием Win32API.

Элементы: статический текст; текстовое поле; список; комбинированный список; кнопки; полоса прокрутки.

Элементы управления являются дочерними окнами. Соответственно и создаются — как и все окна — функцией CreateWindow().

Управляющие элементы при возникновении некоторых событий, связанных с реакцией пользователя, посылают своему родительскому окну сообщения-оповещения (notification messages) WM_COMMAND или WM_NOTIFY.

Для многих управляющих элементов определены специальные сообщения, которые управляют видом или поведением таких элементов или позволяют получить параметры их состояния. Как и для любого другого окна эти сообщения можно отправить с помощью функции: LRESULT WINAPI SendMessage(HWND, UINT, WPARAM, LPARAM)

Статический текст: представляет собой текстовую метку или прямоугольник. Не предоставляет пользователю ни средств ввода, ни вывода.

HWND CreateWindow(“static”…);

ТЕКСТОВОЕ ПОЛЕ предназначено для ввода пользователем текста с клавиатуры

HWND CreateWindow(“edit”, …);

Чтобы поменять содержимое текстового поля, программа вызывает функцию SetDlgItemText. Чтобы получить текущее содержимое текстового поля, используется функция: GetDlgItemText

Список

HWND CreateWindow(“listbox”, …);

Окно-список используется для отображения списка имен (например, имен файлов). Пользователь может, просматривая список, выделить один или несколько элементов щелчком мыши. При выделении того или иного элемента списка, он подсвечивается, а родительскому окну посылается сообщение-оповещение. Для очень больших списков могут использоваться полосы прокрутки.

Комбинированный список

HWND CreateWindow(“combobox”, …);

Кнопки

HWND CreateWindow(“button”, …);

Можно использовать стандартные кнопки четырех видов:

1) командные кнопки, срабатывающие по нажатию (PUSHBUTTON);

2) флажки (CHECKBOX);

3) переключатели (RADIOBUTTON);

4) рамки, объединяющие другие кнопки (GROUPBOX).

При щелчке мыши по кнопке она присылает родительскому диалогу сообщение-оповещение WM_COMMAND

Полоса прокрутки

Полосу прокрутки можно использовать:

1) как часть окна или блока диалога:

HWND CreateWindow(CalssName, …);

2) как самостоятельный элемент:

HWND CreateWindow(“scrollbar”, …);

Полосы прокрутки посылают уведомления о различных событиях и сменах состояния в рамках двух сообщений: WM_HSCROLL и WM_VSCROLL.

Типичные задачи: создание графических объектов средствами Win32API и GDI, создание и работа со стандартными элементами управления Windows средствами Win32API.

1. Нарисовать  прямоугольник или эллипс в какой-то части окна (getclintrect) пером с цветом из стандартного диалогового окна.

HDC hdc;

PAINTSTRUCT ps;

static CHOOSECOLOR ccol;

static COLORREF clf;

RECT rt;

HPEN pen;

case WM_CREATE:

ccol.lStructSize=sizeof(CHOOSECOLOR);

break;

case WM_LBUTTONDOWN:

ccol.rgbResult=clf;

if (ChooseColor(&ccol))

{

clf=ccol.rgbResult;

GetClientRect(hWnd,&rt);

}

break;

case WM_PAINT:

hdc=BeginPaint(hWnd,&ps);

GetClientRect(hWnd,&rt);

pen=CreatePen(clf);

SelectObject(hdc, pen);

Rectangle(hdc,rt.left,rt.top,rt.right,rt.bottom); / Ellipse (hdc,rt.left,rt.top,rt.right,rt.bottom)

DeleteObject(pen);

EndPaint(hWnd,&ps);

break;

}




1. Арифметичний квадратний корінь 35 Квадратний корінь
2. 1. Настоящий федеральный государственный образовательный стандарт начального профессионального образован.html
3. Простые государства называют унитарными так как его составные части являются простыми административноте
4. Возникновение конфликтов рассматривается как внешние обстоятельства ситуации воспринимаются человеком
5. Его длинные серые полотнища вились вокруг изнуренной толпы паломников словно влажное погребальное покрыва
6. Реферат- Налогообложение доходов иностранных юридических лиц
7. Ивановская государственная текстильная академия ИГТА Кафедра менеджмента КУРСОВА
8. Тема- Учётные регистры и формы бухгалтерского учёта
9. Вводная часть
10. Стресс жизни Причины стресса 4 1
11. Стаття 23 Пріоритетність земель сільськогосподарського призначення 1
12. Детский сад комбинированного вида 8 Родничок Кемеровская область город Юрга
13.  Структура мирового хозяйства 2
14.  К~нерген с~зді с~йлемді к~рсеті~із
15. тема в целом национальная экономика.
16. 38см средняя окружность грудной клетки 3335см
17. Реферат- Анализ способов защиты и хищения информации в счетчиках электрической энергии
18.  наследственный фактор;2
19. буржуазного типа
20. на тему- Современное состояние контроля качества полуфабрикатов и готовой продукции Выполнил- ст