mage-nRight)+nRight, nTop+(cyImage-nTop-nBottom)};
if (!::IsRectEmpty(&rcDest) && !::IsRectEmpty(&rcSrc))
Draw(hDC, rcDest, rcSrc);
}
// 下边
{
RECT rcDest = {x+nLeft, y+(cy-nBottom), (x+nLeft)+(cx-nLeft-nRight), (y+(cy-nBottom))+nBottom};
RECT rcSrc = {nLeft, cyImage-nBottom, nLeft+(cxImage-nLeft-nRight), (cyImage-nBottom)+nBottom};
if (!::IsRectEmpty(&rcDest) && !::IsRectEmpty(&rcSrc))
Draw(hDC, rcDest, rcSrc);
}
// 右下
{
RECT rcDest = {x+(cx-nRight), y+(cy-nBottom), (x+(cx-nRight))+nRight, (y+(cy-nBottom))+nBottom};
RECT rcSrc = {cxImage-nRight, cyImage-nBottom, (cxImage-nRight)+nRight, (cyImage-nBottom)+nBottom};
if (!::IsRectEmpty(&rcDest) && !::IsRectEmpty(&rcSrc))
Draw(hDC, rcDest, rcSrc);
}
// 左下
{
RECT rcDest = {x, y+(cy-nBottom), x+nLeft, (y+(cy-nBottom))+nBottom};
RECT rcSrc = {0, cyImage-nBottom, nLeft, (cyImage-nBottom)+nBottom};
if (!::IsRectEmpty(&rcDest) && !::IsRectEmpty(&rcSrc))
Draw(hDC, rcDest, rcSrc);
}
// 中间
{
RECT rcDest = {x+nLeft, y+nTop, (x+nLeft)+(cx-nLeft-nRight), (y+nTop)+(cy-nTop-nBottom)};
RECT rcSrc = {nLeft, nTop, nLeft+(cxImage-nLeft-nRight), nTop+(cyImage-nTop-nBottom)};
if (!::IsRectEmpty(&rcDest) && !::IsRectEmpty(&rcSrc))
Draw(hDC, rcDest, rcSrc);
}
return TRUE;
}
//获取文件类型(通过文件头几个字节获取)
int CImageEx::GetFileType(LPCTSTR lpszFileName)
{
unsigned char png_head[8] = {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A};
unsigned char gif89a_head[6] = {'G','I','F','8','9','a'};
unsigned char gif87a_head[6] = {'G','I','F','8','7','a'};
unsigned char jpg_head[2] = {0xFF, 0xD8};
unsigned char bmp_head[2] = {0x42, 0x4D};
unsigned char cData[16] = {0};
FILE * fp = _tfopen(lpszFileName, _T("rb"));
if (NULL == fp)
return -1;
fread(cData, sizeof(cData), 1, fp);
fclose(fp);
if (!memcmp(cData, png_head, 8))
return 0;
else if (!memcmp(cData, gif89a_head, 6) || !memcmp(cData, gif87a_head, 6))
return 1;
if (!memcmp(cData, jpg_head, 2))
return 2;
else if (!memcmp(cData, bmp_head, 2))
return 3;
else
return -1;
}
?
|