在保留alpha通道的同时缩放TBitmap

时间:2018-02-28 08:38:14

标签: windows c++builder

对于给定的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的参考资料。

0 个答案:

没有答案