CPicture - класс для отображения картинокАвтор: Dr. Yovav Gad.
После долгих поисков механизма загрузки JPG из ресурса и его отображения в диалоговом приложении, не увенчавшихся успехом, была предпринята попытка создания собственного класса. Итак, был создан, очень простой и в тоже время функциональный класс. Его можно легко добавить в проект. При этом не понадобилось изобретать механизм для чтения заголовков JPEG (Класс использует интерфейс IPicture как это делает Internet Explorer) О ПроектеПриложение слегка напоминает всем извесный просмотрщик картинок "ACDSee". Правда из-за нехватки времени проект не был доведён до совершенства. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Picture (Implementations) Version 1.00 Routines: 4 Showing Picture Files... (.BMP .DIB .EMF .GIF .ICO .JPG .WMF) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COPYFREE (F) - ALL RIGHTS FREE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class CPicture { public: void FreePictureData(); BOOL Load(CString sFilePathName); BOOL Load(UINT ResourceName, LPCSTR ResourceType); BOOL LoadPictureData(BYTE* pBuffer, int nSize); BOOL SaveAsBitmap(CString sFilePathName); BOOL Show(CDC* pDC, CPoint LeftTop, CPoint WidthHeight, int MagnifyX, int MagnifyY); BOOL Show(CDC* pDC, CRect DrawRect); BOOL ShowBitmapResource(CDC* pDC, const int BMPResource, CPoint LeftTop); BOOL UpdateSizeOnDC(CDC* pDC); CPicture(); virtual ~CPicture(); IPicture* m_IPicture; // Тоже самое что и // LPPICTURE (typedef IPicture __RPC_FAR *LPPICTURE) LONG m_Height; // Высота в пикселях LONG m_Weight; // Размер объекта картинки в // байтах (Файл или ресурс) LONG m_Width; // Ширина в пикселях };
//~~~~~~~~~Пример использования класса~~~~~~~~~~~~~~
//
// Чтобы использовать функции из этого класса, необходимо добавить
// в проект два файла "CPicture.CPP" и "CPicture.H",
// а затем создать объект изображения и отобразить его на
// Контексте устройства
//
// CPicture m_Picture; // Создаём объект изображения
// // (Экземпляр этого класса)
// #include "Picture.h" // Для создания объекта
// // необходимо добавить этот файл...
//
// Далее загружаем данные изображения в интерфейс IPicture Interface
// (.BMP .DIB .EMF .GIF .ICO .JPG .WMF)
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// m_Picture.Load("Test.JPG"); // Загружаем из файла
// m_Picture.Load(IDR_TEST, "JPG"); // Загружаем из ресурса
// (необходимо добавить IDR_TEST в ресурсы с собственным именем
// например - "JPG")
//
// Затем используем объект DC на диалоговом приложении
// (CPaintDC dc(this);)
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// m_Picture.UpdateSizeOnDC(&dc); // Получаем размерность картинки
// // в пикселях
// m_Picture.Show(&dc,
// CPoint(0,0),
// CPoint(m_Picture.m_Width, m_Picture.m_Height),
// 0,0);
// // Изменяем изначальные размеры:
// m_Picture.Show(&dc, CRect(0,0,100,100));
// // Показываем ресурс Bitmap:
// m_Picture.ShowBitmapResource(&dc, IDB_TEST, CPoint(0,0));
//
// ИЛИ используя указатель на "Регулярное" MFC Приложение (CDC* pDC)
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// m_Picture.UpdateSizeOnDC(pDC); // Получаем размерность картинки
// // в пикселях
// m_Picture.Show(pDC,
// CPoint(0,0),
// CPoint(m_Picture.m_Width, m_Picture.m_Height),
// 0,0);
// // Изменяем изначальные размеры:
// m_Picture.Show(pDC, CRect(0,0,100,100));
// // Показываем ресурс Bitmap:
// m_Picture.ShowBitmapResource(pDC, IDB_TEST, CPoint(0,0));
//
// Показываем информацию о картинке
// ~~~~~~~~~~~~~~~~~~~~~~~~
// CString S;
// S.Format("Size = %4d\nWidth = %4d\nHeight = %4d\nWeight = %4d\n",
// m_Picture.m_Weight,
// m_Picture.m_Width,
// m_Picture.m_Height,
// m_Picture.m_Weight);
// AfxMessageBox(S);
//
//~~~~~~~~~~~~~~~~~Cut The Bull Here~~~~~~~~~~~~~~~~~~~~~
DownloadsСкачать демонстрационный (SDI) проект - 193Kb Скачать исходник (только класс CPicture) - 7Kb
|