![]() |
![]() |
|
![]() |
||||||||||||||||||
![]() |
![]() |
![]() |
||||||||||||||||
|
![]() |
|
![]() |
|
||||||||||||||
![]() |
![]() |
![]() |
Шаг 327 - Читаем BMP файл с дискаДавайте создадим приложение SDI с помощью AppWizard и пусть оно назвается GraphWork. Теперь наша задача считать файл BMP c диска и отобразить на экране. Создаем пункт меню: Теперь привяжем этот пункт меню к функции в классе документа: void CGraphWorkDoc::OnInsertImage() { ...... } Нам в классе документа нужно объявить две переменные - дескриптор изображения HBITMAP и класс CBitmap. class CGraphWorkDoc : public CDocument { ...... // Implementation public: HBITMAP hBitmap; CBitmap m_bmpBitmap; virtual ~CGraphWorkDoc(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif ...... }; Вот теперь можно и функцию написать: void CGraphWorkDoc::OnInsertImage() { CString m_sFileName; CFileDialog fileDialog(TRUE,NULL,"*.bmp"); int result = fileDialog.DoModal(); if (result==IDOK) { m_sFileName=fileDialog.GetPathName(); HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), m_sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); m_bmpBitmap.Detach(); m_bmpBitmap.Attach(hBitmap); UpdateAllViews(NULL); } } Что написано ? Узнать имя BMP файла для начала. Потом прочитать его, используя LoadImage(), и связать с классом CBitmap, а затем обновить вид. Рисовать мы будем его в функции OnDraw() вида: void CGraphWorkView::OnDraw(CDC* pDC) { CGraphWorkDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CDC dcTemp; dcTemp.CreateCompatibleDC(pDC); dcTemp.SelectObject(pDoc->m_bmpBitmap); BITMAP bm; if (pDoc->m_bmpBitmap.GetSafeHandle()!=NULL) pDoc->m_bmpBitmap.GetBitmap(&bm); pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcTemp,0,0,SRCCOPY); } Здесь мы создаем контекст памяти и выбираем в этот контекст объект CBitmap, потом получаем информацию о размере изображения и выводим на экран BitBlt(). BMP файлы есть, например, в каталоге Windows. Оттуда я и взял файл установка.bmp. | | Автор Каев Артем. |
![]() |
![]() |
![]() |
|