diff --git a/modules/base/HGImage.cpp b/modules/base/HGImage.cpp index 3295d5e1..c4f6e59a 100644 --- a/modules/base/HGImage.cpp +++ b/modules/base/HGImage.cpp @@ -1,4 +1,4 @@ -#include "HGImage.h" +#include "HGImage.h" #include "HGInc.h" #if defined(HG_CMP_MSC) #include @@ -525,12 +525,11 @@ static HGResult LoadGdiImage(Gdiplus::Image* pImage, const HGImageRoi* roi, HGUI HBITMAP hBmp = NULL; HGBase_GetHBITMAPOfImage(*image, &hBmp); - if (NULL != hBmp) + if (NULL != hBmp && (HGBASE_IMGTYPE_BGR == type || HGBASE_IMGTYPE_BGRA == type)) { HDC hMem = CreateCompatibleDC(NULL); HBITMAP hOldBmp = (HBITMAP)SelectObject(hMem, hBmp); Gdiplus::Graphics graphics(hMem); - graphics.SetInterpolationMode(Gdiplus::InterpolationModeHighQuality); graphics.DrawImage(pImage, (INT)roi2.left, (INT)roi2.top, (INT)(roi2.right - roi2.left), (INT)(roi2.bottom - roi2.top)); SelectObject(hMem, hOldBmp); @@ -544,6 +543,10 @@ static HGResult LoadGdiImage(Gdiplus::Image* pImage, const HGImageRoi* roi, HGUI type2 = HGBASE_IMGTYPE_BGR; else if (HGBASE_IMGTYPE_RGBA == type) type2 = HGBASE_IMGTYPE_BGRA; + else if (HGBASE_IMGTYPE_GRAY == type) + type2 = HGBASE_IMGTYPE_BGR; + else if (HGBASE_IMGTYPE_BINARY == type) + type2 = HGBASE_IMGTYPE_BGR; HGImage image2 = NULL; ret = LoadGdiImage(pImage, roi, type2, origin, &image2);