Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OAiP_Konspekt_lektsy.pdf
Скачиваний:
33
Добавлен:
11.05.2015
Размер:
843.37 Кб
Скачать

Таким образом, путь может состоять из одного или нескольких подпутей, каждый подпуть - это серия связанных линий.

Подпуть в рамках пути может быть открыт или закрыт. Подпуть за- крыт, если в нем первая точка первой связанной линии и последняя точка последней - совпадают.

Функция CloseFigure - закрывает подпуть, добавляя при необходи- мости прямую линию. Любой последующий вызов функции рисования на- чинает новый подпуть. Определение пути завершается функцией

EndPath (hdc);

Уничтожают определение пути функции

StrokePath (hdc);

FillPath (hdc); StrokeAndFillPath (hdc);

hRgn = PathToRegion (hdc);

SelectClipPath (hdc, iCombine);

StrokePath рисует путь текущим пером; другие функции закрывают все от- крытые пути прямыми линиями; FillPath закрашивает путь текущей кистью, текущим режимом закрашивания многоугольников; StrokeAndFillPath вы- полняет оба указанных действия.

Можно преобразовать путь в регион или использовать путь как об- ласть отсечения. Параметр iCombine - показывает, как путь должен комби- нироваться с текущим регионом отсечения.

Пути являются более гибкими структурами по сравнению с региона- ми, т.к. могут состоять из любых линий.

10. Растровая графика

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

Для большинства устройств отображения первичен растровый прин- цип формирования изображения. Некоторые контексты поддерживают не все функции растровой графики. Информацию о совместимости может предоставить функция GetDeviceCaps.

Простейшим способом получения произвольных изображений явля- ется доступ к его точкам. Функции

COLORREF SetPixel (hdc, nX, nY, crColor); BOOL SetPixelV (hdc, nX, nY, crColor); COLORREF GetPixel (hdc, nX, nY);

выполняют изменение состояния (цвета) одной логической точки и полу- чение текущего состояния; SetPixelV приводит значение цвета к ближай- шему представимому в данном контексте; возвращаемое значение - теку- щее состояние точки (COLORREF), либо признак успешности выполнения (BOOL); nX, nY логические координаты точки; crColor - новое значение цвета точки.

Более эффективные функции манипулируют не отдельными точками, а массивами точек фрагментами изображений и битовыми образами.

99

PDF created with pdfFactory Pro trial version www.pdffactory.com

Битовый образ (bitmap) – двухмерный массив числовых значений, характеризующий состояние точек некоторой области.

В простейшем случае битовый образ описывается структурой BITMAP, содержащей поля: bmType - тип образа (0); bmWidth, bmHeight - значения ширины и высоты прямоугольной области в пикселях; bmWidthBytes - размер образа одной строки изображения в байтах; bmPlanes - количество цветовых планов (плоскостей), т.е. компонент, за- дающих цвет; bmBitsPixel - количество бит для кодирования цвета точки; bmBits - указатель на двухмерный массив данных, каждая строка которого соответствует одной строке изображения.

Используются монохромный и цветной типы образов, при монохром- ном - одноцветный план и один бит на точку, единичное значение бита за- дает для точки цвет переднего плана, нулевое - заднего.

Битовые образы идентифицируются их описателями HBITMAP. Раз- личают совместимые и контекстно-независимые объекты BITMAP.

Для создания объекта BITMAP с указанными характеристиками: HBITMAP CreateBitmap ( int nWidth, int nHeight, UINT cPlanes,

UINT cBitsPerPel, const void* lpvBits );

HBITMAP CreateBitmapIndirect (const BITMAP* lpBitmap);

возвращают описатель объекта или NULL в случае ошибки.

Для создания объекта BITMAP совместимого типа для заданного контекста с заданными размерами:

HBITMAP CreateCompatibleBitmap (hdc, int nWidth, int nHeight);

в зависимости от контекста он может быть цветным или монохромным (ес- ли в контексте заданы данные раздела DIB - контекстно-независимым).

Для доступа к содержимому битового образа предусмотрены функ- ции SetDlBits и GetDlBits, работающие построчно.

Если объект BITMAP связывается с контекстом функцией SelectObject, все изменения в контексте будут отображаться и в битовом образе.

Перенос прямоугольного фрагмента изображения из контекста- источника в контекст-приемник (с трансформацией и дополнительными операциями) выполняют функции:

BOOL BitBlt (HDC hDstDC, nDstX, nDstY, nDstWidth, nDstHeight, HDC hSrcDC, nSrcX, nSrcY, dwRop);

BOOL StretchBlt (HDC hDstDC, nDstX, nDstY, nDstWidth, nDstHeight, HDC hSrcDC, nSrcX, nSrcY, nSrcWidth, nSrcHeight, dwRop);

BOOL MaskBlt (HDC hDstDC, nDstX, nDstY, nDstWidth, nDstHeight, HDC hSrcDC, nSrcX, nSrcY, HBITMAP hbmMask,

nMaskX, nMaskY, dwRop);

BOOL PlgBlt (HDC hDstDC, const POINT* lpDstVertices, HDC hSrcDC, nSrcX, nSrcY, HBITMAP hbmMask, nMaskX, nMaskY, dwRop);

Функция StretchBlt изменяет масштаб изображения фрагмента; MaskBlt позволяет маскировать часть изображения; PlgBlt осуществляет перенос в непрямоугольную область приемника с соответствующим иска-

100

PDF created with pdfFactory Pro trial version www.pdffactory.com

жением; возвращаемое значение - признак успешности выполнения; пара- метры:

hSrcDC, hDstDC контексты источника и приемника данных; nSrcX, nSrcY, nDstX, nDstY координаты фрагмента;

nSrcWidth, nSrcHeight, nDstWidth, nDstHeight размеры фрагментов; hbmMask битовый образ маски, монохромного типа;

nMaskX, nMaskY точка привязки в образе маски;

lpDstVertices массив структур, задающих вершины параллелограм- ма, образующего фрагмент-приемник;

dwRop дополнительная операция, применяемая к фрагменту при переносе: SRCCOPY - простое копирование, SRCAND - комбинация цве- тов источника и приемника по И, SRCPAINT - комбинация по ИЛИ, DSTINVERT - инверсия фрагмента-приемника, BLACKNESS, WHITENESS -

заполнение фрагмента-приемника цветом соответственно 0 и 1 физиче- ской палитры, и др. Для успешного применения этих функций требуется, чтобы оба контекста относились к одному устройству или идентичным.

101

PDF created with pdfFactory Pro trial version www.pdffactory.com

Св. план 2004, поз. 41

Учебное издание

Бусько Виталий Леонидович, Корбит Анатолий Григорьевич,

Кривоносова Татьяна Михайловна

ОСНОВЫ АЛГОРИТИМЗАЦИИ И ПРОГРАММИРОВАНИЯ

Конспект лекций

для студентов всех специальностей и форм обучения БГУИР

Редактор Е.Н. Батурчик Компьютерная верстка М.В. Шишло

Подписано в печать 21.09.2004.

Формат 60x84 1/16.

Бумага офсетная.

Печать ризографическая.

Гарнитура «Ариал».

Усл. печ. л.

Уч.-изд.л. 4,7.

Тираж 550 экз.

Заказ 362.

Издатель и полиграфическое исполнение: Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники» Лицензия на осуществление издательской деятельности №02330/0056964 от 01.04.2004.

Лицензия на осуществление полиграфической деятельности №02330/0133108 от 30.04.2004. 220013, Минск, П. Бровки, 6

102

PDF created with pdfFactory Pro trial version www.pdffactory.com

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]