У меня есть приложение MFC, и мне нужно нарисовать изображение внутри круга (или обрезать изображение по кругу).
Я использую FreeImage для загрузки изображения, поэтому ответ с использованием FreeImage или функции MFC будет работать.
Вот как я загружаю изображение:
void DrawImage(CDC *pDC, RECT *pRect, const BYTE *pBuffer, int nBufferLength)
{
FIMEMORY *pfmem = FreeImage_OpenMemory((BYTE*)pBuffer, nBufferLength);
FREE_IMAGE_FORMAT fif = FreeImage_GetFileTypeFromMemory(pfmem);
FIBITMAP *pdib = FreeImage_LoadFromMemory(fif, pfmem);
sz.cx = FreeImage_GetWidth(pdib);
sz.cy = FreeImage_GetHeight(pdib);
CRect rc(pRect);
BITMAPINFO *pbmpi = FreeImage_GetInfo(pdib);
BYTE *pDibBits = FreeImage_GetBits(pdib);
::SetDIBitsToDevice(pDC->GetSafeHdc(),
rc.left,
rc.top,
rc.Width(),
rc.Height(),
0,
0,
0,
rc.Height(),
pDibBits,
pbmpi,
DIB_RGB_COLORS);
FreeImage_Unload(pdib);
FreeImage_CloseMemory(pfmem);
}