【发布时间】:2010-11-12 21:33:10
【问题描述】:
我正在用 c++、gdi+ 编写代码。
我使用 Image 的 GetThumbnail() 方法来获取缩略图。 但是,我需要将其转换为 HBITMAP。 我知道下面的代码可以获取GetHBITMAP:
Bitmap* img;
HBITMAP temp;
Color color;
img->GetHBITMAP(color, &temp); // if img is Bitmap* this works well。
但是如何快速将 Image* 转换为 Bitmap*? 非常感谢!
其实,现在我得用下面的方法:
int width = sourceImg->GetWidth(); // sourceImg is Image*
int height = sourceImg->GetHeight();
Bitmap* result = new Bitmap(width, height,PixelFormat32bppRGB);
Graphics gr(result);
//gr.SetInterpolationMode(InterpolationModeHighQuality);
gr.DrawImage(sourceImg, 0, 0, width, height);
我真的不知道他们为什么不提供 Image* -> Bitmap* 方法。但是让 GetThumbnail() API 返回一个 Image 对象....
【问题讨论】:
-
你这样做的方式很好。它通常不能“快速”转换的原因是因为
Image根本不一定是位图 - 它可以是矢量图像(尽管我知道 GDI+ 支持的唯一矢量格式是 WMF/电磁场)。我想在这种情况下,GetThumbnail也会生成矢量图。