|
http://tikitak.narod.ru ---- Главная страница сайта
Шаг 88 - Выводим растровую картинку на экран
Карабли в моей гавани
Не взлетим так поплаваем
Стрелки ровно на два часа назад
...............
Земфира
Создаем проект. Запускайте VC и MFC AppWizard. Дайте имя проекту TestBmp, в первом шаге поставьте Single Document и нажимайте Finish.
Теперь нам нужно импортировать в ресурсы картинку. В проекте, который сопровождает этот шаг есть картинка, но Вы можете вставить и свою. Только в таком случае не напутайте с размерами. Кстати картинка это фотография карьера, на котором добывают серебро. Внимание Картинка должна быть в 256 цветах иначе вы получите сообщение об ошибке.
Переключаемся на вкладку Resource, нажимаем правую кнопку мыши и выбираем пункт меню Import. В типе файлов установите Все файлы (*.*) и найдите картинку. Если все нормально, то будет так.
Как известно вся прорисовка производится в функции OnDraw класса вида (CTestBMPView). Нам туда. Вот весь код.
/////////////////////////////////////////////////////////////////////////////
// CTestBMPView drawing
void CTestBMPView::OnDraw(CDC* pDC)
{
CTestBMPDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CDC dcTemp;
CBitmap cb;
cb.LoadBitmap(IDB_BITMAP1);
dcTemp.CreateCompatibleDC(pDC);
dcTemp.SelectObject(cb);
pDC->BitBlt(0,0,200,200,&dcTemp,0,0,SRCCOPY);
}
Итак мы создали экземпляр класса CBitmap и прочитали в него картинку LoadBitmap передав идентификатор из ресурсов. Так же мы создали экземпляр класса контекста устройства. Создали аналог существующему CreateCompatibleDC и поместили туда картнику SelectObject и вывели её на экран функцией BitBlt, которая как раз для этого предназначена. Эта функция копирует битовую карту в контекст устройства. Вот она какая.
BOOL BitBlt(
int x, X верхнего левого угла
int y, Y верхнего левого угла
int nWidth, ширина
int nHeight, высота
CDC* pSrcDC, указатель на обьект CDC из которого копируетбся битовая карта
int xSrc, X верхнего левого угола капируемой карты
int ySrc, Y верхнего левого угола капируемой карты
DWORD dwRop Выполняемая растрования операция
);
Указанный мной параметр просто копирует SRCCOPY, а их 15 :-) С инвертированием и логическими операциями типа OR или AND и всякими там прибамбасами. Это мне напоминает одну песню, когда-то существовавшей группы Мальчишник. Вот эти слова из песни - и на голове я имел её тоже. :-) Как раз подходят.
Вы можете запустить программу на выполнение. Картинка будет на экране. Вот только в предварительном просмотре вы её не увидите. Все просто. MFC не умеет выводить картинки на печать .....
Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|