我想创建一个TImage
组件并用背景颜色填充图像。但是我的代码比我预期的要长一些。
如果我没记错的话,在旧的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;
答案 0 :(得分:5)
FMX中没有FloodFill。但您可以使用Clear(TAlphaColors.Black);
以使用颜色填充整个位图。
答案 1 :(得分:3)
您必须设置位图尺寸的原因是因为位图大小不一定与TImage相同。您可以使用比TImage更小或更大的位图,然后使用WrapModes之一来确定如何将图像渲染到TImage:
WrapMode属性应该是TImageWrapMode类型中定义的常量之一:
至于计算整个位图的矩形。如果您希望您的位图与TImage具有相同的大小,那么您可以轻松阅读TImage.ClipRect。
ClipRect通常是一个矩形,表示您可以渲染的控件的内部部分。在具有TPanel等边框的控件上,例如ClipRect尺寸小于整个控件尺寸。
正如Sebastian已经说过的那样,你可以使用TBitmap.Clear方法快速用一个collor填充整个Bitmap表面bacghroud。