我在C++,gdi +中编写代码。如何将GDI +的图像*转换为位图*
我利用Image的GetThumbnail()方法来获取缩略图。 但是,我需要将其转换为HBITMAP。 我知道下面的代码可以得到GetHBITMAP:
Bitmap* img;
HBITMAP temp;
Color color;
img->GetHBITMAP(color, &temp); // if img is Bitmap* this works well。
但我怎么能转换图片*成位图*快? 非常感谢!
其实,现在我必须使用以下方法:
int width = sourceImg->GetWidth(); // sourceImg is Image*
int height = sourceImg->GetHeight();
Bitmap* Result;
result = new Bitmap(width, height,PixelFormat32bppRGB);
Graphics gr(result);
//gr.SetInterpolationMode(InterpolationModeHighQuality);
gr.DrawImage(&sourceImg,0,0,width,height);
我真的不知道他们为什么不提供图片* - >位图*方法。但让GetThumbnail()API返回一个Image对象....
你做的方式是好的。它之所以无法在一般情况下转换为“快速”,是因为“Image”根本不一定是位图 - 它可能是一个矢量图像(尽管我知道GDI +支持的唯一矢量格式是WMF/EMF)。我会想象在这种情况下,`GetThumbnail`也会产生一个矢量图像。 – 2009-07-22 08:16:55
非常感谢!您的评论听起来合理! – user25749 2009-07-22 08:39:31