|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Растровая графикаВсе рассмотренные выше функции базировались на вычерчивании графических примитивов определенными инструментами по заданным командам, т.е. по векторному принципу. Растровая графика предусматривает доступ к изображению на уровне образующих его точек. Для большинства устройств отображения первичен растровый принцип формирования изображения. Некоторые контексты поддерживают не все функции растровой графики. Информацию о совместимости может предоставить функция GetDeviceCaps (). Простейшим и наиболее универсальным способом получения произвольных изображений является доступ к отдельным его точкам. Функции COLORREF SetPixel (hdc, nX, nY, crColor); BOOL SetPixelV (hdc, nX, nY, crColor); COLORREF GetPixel (hdc, nX, nY); выполняют соответственно изменение состояния (цвета) одной логической точки и получение текущего состояния. Функция SetPixelV () приводит значение цвета к ближайшему представимому в данном контексте цвету; возвращаемое значение – состояние точки на момент вызова функции (COLORREF), либо признак успешности выполнения (BOOL). Параметры nX, nY – логические координаты точки (int); crColor – новое значение цвета точки (COLORREF). Более сложные и эффективные функции манипулируют не отдельными точками, а массивами точек – фрагментами изображений и битовыми образами. Битовый образ (bitmap) – двухмерный массив числовых значений, характеризующий состояние точек некоторой области, обычно прямоугольной. В простейшем случае битовый образ описывается структурой BITMAP, содержащей поля: LONG bmType – тип образа, должен быть равен 0; LONG bmWidth, LONG bmHeight – положительные значения ширины и высоты прямоугольной области в пикселах; LONG bmWidthBytes – размер в байтах образа одной строки изображения, в среде Windows должен быть кратен 2, т.к. система предполагает, что массив состоит из слов; WORD bmPlanes – количество цветовых планов (плоскостей), т.е. компонент, задающих цвет; WORD bmBitsPixel – количество бит для кодирования цвета точки; LPVOID bmBits – указатель на двухмерный массив данных, каждая строка которого соответствует одной строке изображения. Используются монохромный и цветной типы образов. В случае монохромного – одноцветовой план и один бит на точку, единичное значение этого бита задает для точки цвет переднего плана (foreground), нулевое – заднего (backgroung). Битовые образы – объекты, идентифицирующиеся их описателями – HBITMAP. Различают совместимые и контекстно-независимые объекты BITMAP. Функции HBITMAP CreateBitmap (int nWidth, int nHeight, UINT cPlanes, UINT cBitsPerPel, const void* lpvBits); HBITMAP CreateBitmapIndirect (const BITMAP* lpBitmap); создают объект BITMAP с указанными характеристиками, возвращаемое значение – описатель объекта или NULL в случае ошибки; параметры: nWidth, nHeight – размеры образа в точках изображения; cPlanes – количество цветовых планов; cBitsPerPel – «глубина» цвета; lpvBits – массив данных образа; lpBitmap – структура BITMAP, содержащая перечисленные параметры. Функция HBITMAP CreateCompatibleBitmap (hdc, int nWidth, int nHeight); создает объект BITMAP совместимого типа для заданного контекста с заданными размерами; в зависимости от контекста он может быть создан цветным или монохромным (если в контексте заданы данные раздела DIB – контекстно-независимым); возвращаемое значение – описатель объекта или NULL; nWidth и nHeight – размеры образа. Для доступа к содержимому битового образа предусмотрены функции SetDlBits () и GetDlBits (), которые работают построчно, однако имеется возможность воздействовать на него всеми доступными инструментами. Для этого объект BITMAP связывается с некоторым контекстом с помощью универсальной функции SelectObject (), после чего все изменения в контексте будут отображаться и в битовом образе. Функции: BOOL BitBlt (HDC hDstDC, int nDstX, int nDstY, int nDstWidth, int nDstHeight,HDC hSrcDC, int nSrcX, int nSrcY, DWORD dwRop); BOOL StretchBlt (HDC hDstDC, int nDstX, int nDstY, int nDstWidth, int nDstHeight, HDC hSrcDC, int nSrcX, int nSrcY, int nSrcWidth, int nSrcHeight, DWORD dwRop); BOOL MaskBlt (HDC hDstDC, int nDstX, int nDstY, int nDstWidth, int nDstHeight, HDC hSrcDC, int nSrcX, int nSrcY, HBITMAP hbmMask, int nMaskX, int nMaskY, DWORD dwRop); BOOL PlgBlt (HDC hDstDC, const POINT* lpDstVertices, HDC hSrcDC, int nSrcX, int nSrcY, HBITMAP hbmMask, int nMaskX, int nMaskY, DWORD dwRop); выполняют перенос прямоугольного фрагмента изображения из контекста-источника в контекст-приемник (с трансформацией и дополнительными операциями). Функция StretchBlt может изменять масштаб изображения фрагмента; MaskBlt позволяет маскировать часть изображения; PlgBlt осуществляет перенос в непрямоугольную область приемника с соответствующим искажением; возвращаемое значение – признак успешности выполнения; параметры: hSrcDC, hDstDC – контексты источника и приемника данных; nSrcX, nSrcY, nDstX, nDstY – координаты фрагмента в обоих контекстах; nSrcWidth, nSrcHeight, nDstWidth, nDstHeight – размеры фрагментов; hbmMask – битовый образ маски, монохромного типа, нулевые точки маски указывают на применение к данной точке изображения операции «заднего плана», единичные – «переднего плана»; nMaskX, nMaskY – точка привязки в образе маски; lpDstVertices – массив структур, задающих вершины параллелограмма, образующего фрагмент-приемник; dwRop – дополнительная операция, применяемая к фрагменту при переносе: SRCCOPY – простое копирование, SRCAND – комбинация цветов источника и приемника по «И», SRCPAINT – комбинация по «ИЛИ», SRCINVERT – комбинация по «исключающему ИЛИ», SRCERASE – комбинация по «И» цвета источника и инверсии цвета приемника, NOTSRCCOPY, NOTSRCERASE – соответствует одноименным, но результирующий цвет инвертируется, DSTINVERT – инверсия фрагмента-приемника, BLACKNESS, WHITENESS – заполнение фрагмента-получателя цветом соответственно 0 и 1 физической палитры и другие. Для MaskBlt параметр включает операции для переднего и заднего фонов, формируется с помощью макроса MAKEROP 4. Для успешного применения этих функций требуется, чтобы оба контекста относились к одному устройству или идентичным устройствам. При использовании функций следует учитывать, что в логических координатных системах, связанных с обоими контекстами, отсчитываются только координаты опорных точек и размеры границ фрагмента, содержимое же его всегда ориентировано одинаково. Эффекты, возникающие при деформации битового образа, дополнительно управляются функцией SetStretchBltMode, текущая настойка – GetStretchBltMode.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |