FMX:用背景色填充整个位图

sta*_*005 0 delphi canvas bitmap graphic firemonkey

我想创建一个TImage组件,并用背景色填充图像。但是我的代码比我预期的要长。

  1. 我必须设置位图的宽度和高度。
  2. 我必须计算整个位图画布的矩形。

如果我没记错的话,在旧的Delphi版本中,我可以用FloodFill特定的颜色填充整个图像。所以我想我确实错过了一些事情。

有人可以弄清楚如何用更简单的代码填充背景色吗?

Image := TImage.Create(nil);
Image.Position.X := 100;
Image.Position.Y := 100;
Image.Width := 500;
Image.Height := 500;
Image.Bitmap.Width := Trunc(Image.Width);
Image.Bitmap.Height := Trunc(Image.Height);
with Image.Bitmap.Canvas do
begin
  BeginScene;
  try
    Fill.Color := TAlphaColors.Black;
    FillRect(RectF(0, 0, Image.Bitmap.Width, Image.Bitmap.Height), 0, 0, [], 1.0);
  finally
    EndScene;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

Seb*_*n Z 5

FMX中没有FloodFill。但是您可以使用Clear(TAlphaColors.Black);以便用一种颜色填充整个位图。

  • 如果在视网膜设备上运行stanleyxu2005的示例代码,则会在Image控件中居中得到一个黑色矩形(即图像大小的一半)。您必须将图像的大小乘以Image.Scene.GetSceneScale(不要忘记检查是否已分配Image.Scene)或使用WrapMode。 (2认同)