1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| UINT CIndexFicheView::LoadCurPage()
{
CFileFind fileFind;
BOOL bFound = fileFind.FindFile(strSourcePath);
CPaintDC dc(this);
if(PathFileExists(strCurFiche))
{
CString curFile = strCurFiche;
FIMULTIBITMAP* multiBmp = FreeImage_OpenMultiBitmap(FIF_TIFF, curFile, FALSE, TRUE);
//charger et rescaler l'image
FIBITMAP* pDIB = FreeImage_LockPage(multiBmp, m_nCurPage);
FIBITMAP *pNewDIB = FreeImage_Rescale(pDIB, sizeCurPage.cx*1.63, sizeCurPage.cy*1.63, FILTER_LANCZOS3);
FreeImage_UnlockPage(multiBmp, pNewDIB, false);
//Afficher l'image
BITMAPINFOHEADER *pBIH = FreeImage_GetInfoHeader(pNewDIB);
BITMAPINFO *pBI = FreeImage_GetInfo(pNewDIB);
HBITMAP hBitmap = CreateDIBitmap(dc.GetSafeHdc(),pBIH,CBM_INIT,FreeImage_GetBits(pNewDIB),pBI,DIB_RGB_COLORS);
if(!hBitmap)
{
CString tmp;
tmp.Format("%d", GetLastError());
MessageBox(tmp);
}
m_picturePages.SetBitmap(hBitmap);
FreeImage_Unload(pNewDIB);
//page precedente
if(m_nCurPage>0)
{
pDIB = FreeImage_LockPage(multiBmp, m_nCurPage-1);
pNewDIB = FreeImage_Rescale(pDIB, sizePrevPage.cx*1.63, sizePrevPage.cy*1.63, FILTER_CATMULLROM);
FreeImage_UnlockPage(multiBmp, pNewDIB, false);
BITMAPINFOHEADER *pBIH = FreeImage_GetInfoHeader(pNewDIB);
BITMAPINFO *pBI = FreeImage_GetInfo(pNewDIB);
HBITMAP hBitmap = CreateDIBitmap(dc.GetSafeHdc(),pBIH,CBM_INIT,FreeImage_GetBits(pNewDIB),pBI,DIB_RGB_COLORS);
if(!hBitmap)
{
CString tmp;
tmp.Format("%d", GetLastError());
MessageBox(tmp);
}
m_picturePrevPage.SetBitmap(hBitmap);
FreeImage_Unload(pNewDIB);
}
else
{
CBitmap errBitmap;
errBitmap.LoadBitmapA(IDB_NO_PAGE);
m_picturePrevPage.SetBitmap(errBitmap);
}
//page suivante
if(m_nCurPage<FreeImage_GetPageCount(multiBmp)-1)
{
pDIB = FreeImage_LockPage(multiBmp, m_nCurPage+1);
pNewDIB = FreeImage_Rescale(pDIB, sizeNextPage.cx*1.63, sizeNextPage.cy*1.63, FILTER_CATMULLROM);
FreeImage_UnlockPage(multiBmp, pNewDIB, false);
BITMAPINFOHEADER *pBIH = FreeImage_GetInfoHeader(pNewDIB);
BITMAPINFO *pBI = FreeImage_GetInfo(pNewDIB);
HBITMAP hBitmap = CreateDIBitmap(dc.GetSafeHdc(),pBIH,CBM_INIT,FreeImage_GetBits(pNewDIB),pBI,DIB_RGB_COLORS);
if(!hBitmap)
{
CString tmp;
tmp.Format("%d", GetLastError());
MessageBox(tmp);
}
m_pictureNextPage.SetBitmap(hBitmap);
FreeImage_Unload(pNewDIB);
}
else
{
CBitmap errBitmap;
errBitmap.LoadBitmapA(IDB_NO_PAGE);
m_pictureNextPage.SetBitmap(errBitmap);
}
FreeImage_CloseMultiBitmap(multiBmp);
}
return 0;
} |
Partager