Шаг 88 - Выводим растровую картинку на экран

	Карабли в моей гавани
	Не взлетим так поплаваем
	Стрелки ровно на два часа назад
		...............
			Земфира

Создаем проект. Запускайте VC и MFC AppWizard. Дайте имя проекту TestBmp, в первом шаге поставьте Single Document и нажимайте Finish.

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

Переключаемся на вкладку Resource, нажимаем правую кнопку мыши и выбираем пункт меню Import. В типе файлов установите Все файлы (*.*) и найдите картинку. Если все нормально, то будет так.

step88.gif (8207 b)

Как известно вся прорисовка производится в функции 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 не умеет выводить картинки на печать .....


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.