总结一下个人所知道的使用GDI+缩放图片的方法.
方法一:最简单的,使用GetThumbnailImage,这个方法的局限性对支持内嵌缩略图的图片文件无效. 因为MSDN中提到:如果图片文件有内嵌的缩略图,那么就提取这个缩略图返回,否则就缩放原图片,不过我想对位图还是安全的:
Bitmap * image = new Bitmap(L"MagicLinux.bmp");
Image* pScaledImage = NULL;
UINT nWidth = image->GetWidth()/2;
UINT nHeight= image->GetHeight()/2;
pScaledImage = image->GetThumbnailImage(nWidth, nHeight, NULL, NULL);
delete pScaledImage;
delete image;
方法二,使用Graphics::DrawImage,这样还可以控制InterpolationMode(插值模式,在缩放和旋转时候使用),即可以控制缩放质量高低.也可以通过Graphics对象做其他的控制.
方法也比较简单,但是却费了我好久时间才研究出来,没办法,不熟悉GDI+,在MSDN中翻来翻去,:)
Bitmap * ScaleBitmap(Bitmap * pBitmap,UINT nWidth,UINT nHeight)
{
Bitmap * pTemp = new Bitmap(nWidth,nHeight,pBitmap->GetPixelFormat());