
- •1) Для создания контекста метафайла используется функция CreateMetaFile:
- •3) Если имеется идентификатор метафайла, то метафайл можно скопировать в обычный дисковый файл, с помощью функции CopyMetaFile :
- •4) Можно проиграть метафайл в контексте отображения или контексте устройства, вызвав функцию PlayMetaFile:
- •6) Для того чтобы воспользоваться метафайлом, хранящимся в виде дискового файла, его нужно загрузить функцией GetMetaFile, указав в качестве параметра путь к соответствующему файлу:
- •Изменились размеры или местоположение окна;
- •Клиентская область была полностью или частично закрыта другим окном или выпадающим меню, а теперь закрывающий объект исчез;
- •Приложение вызвало одну из функций работы с полосами прокрутки.
- •Битовые изображения в формате ddb
- •Загрузка изображений из ресурсов приложения
- •Int winapi GetObject(
- •Int cbBuffer, // размер буфера
- •Void far* lpvObject); // адрес буфера
- •Захват изображения
- •1) Чтобы вывести изображение экрана в окно необходимо в первую очередь создать контекст для устройства display с помощью функции CreateDc("display", null, null, null) или GetDc(null);
- •3) Далее необходимо выбрать созданный точечный рисунок в этот контекст устройства при помощи вызова функции SelectObject.
- •If (!hWnd)
- •Int wmId, wmEvent;
- •Рисование точки
- •Int nXPos, // X-координата точки
- •Int nYPos, // y-координата точки
- •Int nX, // х - координата конечной точки;
- •Int nY // у - координата конечной точки
- •Рисование прямоугольника
- •Int winapi FrameRect(
- •Рисование сегмента эллипса
- •Рисование сектора эллипса
- •Рисование многоугольников
- •Int far* lpnPolyCounts, // адрес массива количества точек
- •Int cPolygons); // количество многоугольников
Рисование прямоугольника
Простейшая функция, с помощью которой можно нарисовать прямоугольник, называется Rectangle:
BOOL WINAPI Rectangle(
HDC hdc, // идентификатор контекста отображения
int nxTL, // координата x верхнего левого угла
int nyTL, // координата y верхнего левого угла
int nxBR, // координата x правого нижнего угла
int nyBR); // координата y правого нижнего угла
Функция Rectangle рисует прямоугольник для контекста отображения hdc, возвращая значение TRUE в случае успеха или FALSE при ошибке (рис.)
Рис. Рисование прямоугольника
В зависимости от стиля пера граница фигуры может находится полностью внутри прямоугольника, заданного координатами (nxTL, nyTL), (nxBR,nyBR) или выходить за его пределы. Если выбрать стиль пера PS_NULL, граница фигуры станет невидимой.
В зависимости от кисти, выбранной в контекст отображения, внутренность прямоугольника может быть закрашенной в тот или иной цвет, заштрихована одним из нескольких способов или закрашена с помощью любого битового изображения.
С помощью функции RoundRect можно нарисовать прямоугольник со скругленными углами (рис).
Рис. Прямоугольник со скругленными углами
По сравнению с функцией Rectangle функция RoundRect имеет два дополнительных параметра nxEllipse и nyEllipse, определяющих форму и радиус закругления:
BOOL WINAPI RoundRect(
HDC hdc, // идентификатор контекста отображения
int nxTL, // координата x верхнего левого угла
int nyTL, // координата y верхнего левого угла
int nxBR, // координата x правого нижнего угла
int nyBR, // координата y правого нижнего угла
int nxEllipse, // ширина эллипса
int nyEllipse); // высота эллипса
Есть и другие функции, которые можно использовать для рисования прямоугольников.
Функция FillRect закрашивает прямоугольную область окна заданной кистью:
int WINAPI FillRect(
HDC hdc, // идентификатор контекста отображения
const RECT FAR* lprc, // указатель на структуру RECT
HBRUSH hbrush); // идентификатор кисти для закрашивания
Параметр lprc содержит координаты закрашиваемой прямоугольной области. Правая и нижняя граница указанной области не закрашивается.
Независимо от того, какая кисть выбрана в контекст отображения, функция FillRect будет использовать для закраски кисть, указанную параметром hbrush.
Для закрашивания границы прямоугольной области (т. е. для рисования прямоугольной рамки) можно использовать функцию FrameRect:
Int winapi FrameRect(
HDC hdc, // идентификатор контекста отображения
const RECT FAR* lprc, // указатель на структуру RECT
HBRUSH hbrush); // идентификатор кисти для закрашивания
Параметры этой функции аналогичны параметрам функции FillRect.
Значение, возвращаемое функциями FillRect и FrameRect не используется, приложения должны его игнорировать.
Рисование эллипса
Для рисования эллипса можно использовать функцию Ellipse:
BOOL WINAPI Ellipse(
HDC hdc, // идентификатор контекста отображения
int nxTL, // координата x верхнего левого угла
int nyTL, // координата y верхнего левого угла
int nxBR, // координата x правого нижнего угла
int nyBR); // координата y правого нижнего угла
Рис. Рисование эллипса