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

 

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

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

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

Примечание
Конструирование растрового изображения в графическом редакторе Visual С++ и использование его для инициализации объекта описаны в упражнении по созданию программы BitDemo в конце главы.
Создание растрового изображения с использованием функций рисования
Вместо построения растрового изображения в редакторе при выполнении программы можно инициализировать пустое растровое изображение и использовать функции рисования MFC. Перечислим действия, которые необходимо при этом выполнить.
1. Инициализировать пустое растровое изображение.
2. Создать объект памяти контекста устройства.
3. Выбрать растровое изображение в объекте памяти контекста устройства.
4. Нарисовать желаемое растровое изображение, вызывая функции класса CDC для объекта памяти контекста устройства.
Для инициализации пустого растрового изображения вызывается функция CreateCompatibleBitmap. Например:
class CProgView : public CView // класс представления программы !
// . . .
CBitmap m__Bitmap;
void DrawBitmapImage (); // . . . 1;
// .. .
void CProgView::DrawBitmapImage ()
{
CClientDC ClientDC (this); // создание объекта контекста
// устройства окна представления
m_Bitmap.CreateCompatibleBitmap (SClinetDC, 32, 32);
// ...
)
Первый параметр, передаваемый в функцию CreateCompatibleBitmap, является адресом объекта контекста устройства. Растровое изображение совместимо с устройством, соответствующим объекту. Термин совместимо означает, что графические данные растрового изображения будут структурированы способом, подобным используемому при структурировании графических данных самим устройством (при совместимости графические данные можно быстро передавать между растровым изображением и устройством). Чтобы создать растровое изображение на экране, необходимо передать для него адрес объекта контекста устройства. Обычно это явно определенный объект контекста устройства CClientDC или объект контекста устройства, передаваемый в функцию OnDraw класса представления.
Примечание
Растровое изображение при вызове функции CBitmap: :LoadBitmap для загрузки (см. предыдущий параграф) автоматически становится совместимым с экраном.
Второй параметр, передаваемый в функцию CreateCompatibleBitmap, — это ширина растрового изображения, третий — высота. Оба размера задаются в пикселях.
При вызове функции CreateCompatibleBitmap Windows резервирует блок памяти для растрового изображения. Цветовые коды пикселей, хранящиеся внутри него, изначально не определены. Для создания нужного изображения используются функции рисования. Но прежде чем начать рисовать, необходимо создать объект контекста устройства, связанный с этим изображением (в точности так же, как необходимо иметь объект контекста устройств для передачи выводимых данных на устройство типа экрана). Система Windows предоставляет специальный объект контекста устройства для доступа к растровому изображению, называемый объектом памяти контекста устройства. Чтобы его создать, объявляется экземпляр класса CDC, а затем вызывается функция CreateCompatibleDC этого класса.
void CProgView::DrawBitmapImage () (
CClientDC ClientDC (this); // объект контекста устройства
// окна представления
CDC MemDC;
// объект памяти контекста устройства
mJBitmap.CreateCompatibleBitmap (SClientDC, 32, 32); MemDC.CreateCompatibleDC (SClientDC);
// . . .
}
Параметр, передаваемый в функцию CreateCompatibleDC, — это адрес объекта контекста устройства. Результирующий объект памяти контекста устройства будет совместим с устройством, связанным с этим объектом. Передаваемый объект контекста устройства должен быть связан с таким же устройством, как и объект, передаваемый в функцию CreateCompatibleBitmap. Другими словами, растровое изображение и объект памяти контекста устройства, используемый для доступа к растровому изображению, должны быть совместимы с одним устройством. В этих примерах как растровое изображение, так и объект памяти контекста устройства, совместимы с экраном.
Примечание
При передаче значения null в функцию CreateCompatibleDC объект памяти контекста устройства, совместимый с экраном, будет инициализирован.
Затем необходимо вызвать функцию SelectObject класса cdc, чтобы выбрать объект растрового изображения в объекте памяти контекста устройства. Например:
MemDC.SelectObject (&m_Bitmap);
Параметр, передаваемый в функцию SelectObject — это адрес объекта растрового изображения.
Теперь можно нарисовать необходимый фрагмент внутри растрового изображения, вызывая функции рисования класса CDC для объекта контекста устройства. Внутри растрового изображения можно отобразить текст или графику, используя функции, применяемые для рисования внутри окна (см. гл. 18 и 19). Кроме того, можно использовать любой из описанных ниже битовых операторов. Например, функция PatBlt полезна для создания цветного фона внутри растрового изображения. Следующий фрагмент программы рисует белый фон, а затем круг внутри растрового изображения, переданного в объект памяти контекста устройства MemDC.
// рисование белого фона:
Предыдущая << 1 .. 80 81 82 83 84 85 < 86 > 87 88 89 90 91 92 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100