Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 91

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 85 86 87 88 89 90 < 91 > 92 93 94 95 96 97 .. 173 >> Следующая

Примечание
В типичных приложениях требуется сохранять и восстанавливать графические изображения в окне при каждом временном отображении движущегося рисунка. Для этого используется другое растровое изображение, имеющее такие же размеры, как и растровое изображение маски и шаблона. Функцию BitBlt можно использовать с кодом растровой операции srccopy сначала для копирования графики с экрана в это растровое изображение (перед отображением рисунка), а затем для копирования графики из растрового изображения снова на экран (после отображения рисунка).
Исходное Код
растровое растровой Существующая Результирующий
изображение операции графика рисунок
Рис. 20.2. Двухшаговый процесс для отображения непрямоугольного рисунка поверх существующего фонового графического изображения
Функция StretchBlt
Самая универсальная из рассмотренных в этой главе трех функций битовых операций — функция StretchBlt. Она допускает выполнение всех операций, возможных при использовании функции BitBlt. Кроме того, позволяет изменить размер блока графических данных или повернуть блок (по горизонтали, по вертикали или в обоих направлениях) при его перемещении. Функция StretchBlt имеет следующий синтаксис.
BOOL StretchBlt
(int х, int у, // логические координаты левого
// верхнего угла блока-приемника; int nWidth, int nHeight, /,/ размеры блока назначения в
// логических единицах; CDC* pSrcDC, // объект контекста устройства
// источника;
int xSrc, int ySrc, // логические координаты левого
// верхнего угла блока внутри // источника;
int nSrcWidth, int nSrcHeight, // размеры блока источника
// в логических единицах; DWORD dwRop); // код растровой операции
Функция StretchBlt задает размер блока источника и блока приемника. Повторный вызов функции BitBlt позволяет указать только размер одного блока. Если размер приемника (nWidth, nHeight) меньше размера источника (nSrcWidth,
пЗгсНегдгл), то изображение сжимается, если наоборот — растягивается. Если значения пИ1асп и пвгочласп заданы с различными знаками (один положительный, другой отрицательный), то изображение приемника будет зеркальным отображением источника (по горизонтали). Аналогично, если значения пНе1дМ: и пЗгсНе1дМ: заданы с различными знаками, то изображение приемника будет зеркальным отображением по вертикали. Программа Вз^Оелю, рассмотренная далее в этой главе, показывает, как использовать функцию в^е^ЬВ]^ для отображения растрового изображения с заполнением всего окна представления.
Совет
Чтобы подобрать способ, которым функция зт,гессьв]л удаляет пиксели при сжатии блока графических данных, вызовите функцию сое:: SetstretchвltMode.
Отображение значков
Значок — специальная форма растрового изображения — отличается от стандартного двумя основными признаками. Во-первых, ресурс растрового изображения содержит единственное изображение, а ресурс одного значка может содержать одно или несколько изображений. Например, он может содержать 16-цветные изображения размером 16x16 пикселей и 32x32 пикселя, 2-цветное (монохромное изображение) размером 32x32 бита. При отображении значка система использует изображение, наиболее соответствующее текущему видеорежиму и размеру изображения. (Например, в Windows Explorer можно выбрать отображение крупного или мелкого значка.)
Во-вторых, при разработке значка с использованием графического редактора Visual С++ или другого конструктора значков, можно задавать альтернативные цвета каждому пикселю, присваивая ему цвет экрана или инверсный цвет экрана. При отображении значка цвет каждого существующего пикселя в размещении экрана остается неизменным, т. е. часть значка, окрашенная в цвет экрана, будет прозрачной. Аналогично цвет существующего пикселя в позиции каждого пикселя с инверсным цветом экрана будет инвертирован. Таким образом, часть значка с инверсным цветом экрана будет видима при любом цвете фона.
Вы уже познакомились с двумя способами использования значков.
1. Для главного окна программы (см. гл. 10) или для дочернего окна в MDI-приложении (см. гл. 17) можно создать отдельный значок, отображаемый в строке заголовка программы или в каком-либо другом месте.
2. Значок можно отобразить внутри диалогового окна (см. гл. 15).
Рассмотрим способ отображения значков в любом месте внутри окна программы.
Первый этап — конструирование значка с использованием графического редактора Visual С (см. гл. 10). Если значку присвоить идентификатор idrmainframe (или идентификатор типа документа программы в MDI-приложении), то он автоматически будет назначен главному или дочернему окну программы и отобразится в строке заголовка окна. Если не хотите, чтобы конструируемый значок был назначен окну, убедитесь, что он имеет другой идентификатор. Visual С++ присваивает вновь создаваемым или импортируемым значкам стандартные идентификаторы IDI_ICONl, idi_ICON2 И Т.Д.
Совет
Как и для растровых изображений, вместо конструирования значка в графическом редакторе, можно импортировать значок из файла .ico, создаваемого с использованием отдельной программы редактирования значков или полученного из другого источника. При желании его можно отредактировать или изменить его идентификатор с помощью графического редактора Visual С++. Чтобы импортировать файл значка, выберите команду Resource... в меню Insert, щелкните на кнопке Import... в диалоговом окне Insert Resource и выберите файл .ico в диалоговом окне Import Resource.
Предыдущая << 1 .. 85 86 87 88 89 90 < 91 > 92 93 94 95 96 97 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100