我在FMX(FireMonkey)的表单上有一个TImage。我想在运行时将位图加载到TImage中,其中位图应该具有由位图中第一个像素的颜色定义的透明背景。此颜色可能与位图到位图不同。
通过使用适用于TImage的MultiResBitmap编辑器,我知道如何在设计时执行此操作。但是,我找不到任何在运行时如何执行此操作的示例。我是否必须手动执行此操作(获取位图中第一个像素的颜色,然后遍历所有像素并将任何匹配设置为透明),还是有更简单的方法来执行此操作?
答案 0 :(得分:1)
此功能会使用第一个像素的颜色将位图中的某种颜色设置为透明,即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);
}
//---------------------------------------------------------------------------