是否有 FMX 函数可以在运行时设置 TImage 的透明颜色?

2024-01-21

我在 FMX (FireMonkey) 的表单上有一个 TImage。我想在运行时将位图加载到 TImage 中,其中位图应该具有由位图中第一个像素的颜色定义的透明背景。该颜色可能因位图而异。

我知道如何在设计时通过使用 TImage 的 MultiResBitmap 编辑器来做到这一点。但是,我找不到任何有关如何在运行时执行此操作的示例。我是否必须手动执行此操作(获取位图中第一个像素的颜色,然后迭代所有像素并将任何匹配的像素设置为透明),还是有更简单的方法来执行此操作?


该函数将使用第一个像素的颜色将位图中的某种颜色设置为透明,即 claNull。

void SetTransparent (Graphics::TBitmap *oBmp)
{
  TBitmapData bmpData;
  oBmp->Map (TMapAccess::maReadWrite, bmpData);

  TAlphaColor colorToMakeTransparent = bmpData.GetPixel (0, 0);
  TAlphaColor transparentColor = claNull;

  for (int x=0; x<bmpData.Width; x++)
  {
    for (int y=0; y<bmpData.Height; y++)
    {
      TAlphaColor color = bmpData.GetPixel (x, y);
      if (color == colorToMakeTransparent)
        bmpData.SetPixel (x, y, transparentColor);
    }
  }

  oBmp->Unmap (bmpData);
}
//---------------------------------------------------------------------------
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有 FMX 函数可以在运行时设置 TImage 的透明颜色? 的相关文章

随机推荐