对于给定的TBitmap实例,我使用以下来尝试扩展它。它能够获得预期的大小,但丢失了alpha信息。预计仅在Windows平台上使用。
std::unique_ptr<TBitmap> ScaleBMP(TBitmap* Src, int Width, int Height)
{
assert(Src && Src->PixelFormat == pf32bit);
std::unique_ptr<TBitmap> RetVal(new TBitmap());
RetVal->SetSize(Width, Height);
RetVal->PixelFormat = pf32bit;
RetVal->Canvas->StretchDraw(TRect(0, 0, Width, Height), Src);
return std::move(RetVal);
}
尽管像WIC或GDI这样的Windows库是可以的,但最好不要使用额外的库来操作BMP。在保留alpha通道的同时,我无法找到有关缩放BMP的参考资料。