如何在Delphi FMX的TPaintBox中绘制带线性渐变填充的正方形?
Delphi FMX 用TPaintBox绘制渐变填充正方形的实现方法
以下是完整的实现代码,附带关键步骤说明:
procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas); var GradientBrush: TGradientBrush; SquareRect: TRectF; begin Canvas.BeginScene; try // 定义正方形区域:左上角(50,50),边长200 SquareRect := TRectF.Create(50, 50, 250, 250); // 创建线性渐变画刷,渐变方向为正方形对角线(左上到右下) GradientBrush := TGradientBrush.Create(TLinearGradient.Create(SquareRect.TopLeft, SquareRect.BottomRight)); try // 添加渐变颜色节点:起始红色,结束蓝色 GradientBrush.Gradient.ColorStops.Add(TColorStop.Create(0.0, TAlphaColorRec.Red)); GradientBrush.Gradient.ColorStops.Add(TColorStop.Create(1.0, TAlphaColorRec.Blue)); // 应用渐变画刷到画布填充属性 Canvas.Fill.Assign(GradientBrush); // 填充正方形区域 Canvas.FillRect(SquareRect, 0, 0, [], 1); // 可选:绘制正方形边框 Canvas.Stroke.Color := TAlphaColorRec.Black; Canvas.Stroke.Thickness := 2; Canvas.DrawRect(SquareRect, 0, 0, [], 1); finally GradientBrush.Free; // 手动释放画刷,避免内存泄漏 end; finally Canvas.EndScene; end; end;
关键要点说明
- 定义绘制区域:用
TRectF指定正方形的位置和大小,参数依次为左、上、右、下坐标。 - 渐变类型选择:
- 线性渐变:使用
TLinearGradient,传入渐变起点和终点坐标,可自由控制渐变方向(比如改成SquareRect.TopLeft到SquareRect.TopRight就是横向渐变)。 - 径向渐变:如果需要中心向外扩散的效果,替换为
TRadialGradient.Create(SquareRect.CenterPoint, SquareRect.Width/2),参数为渐变中心和半径。
- 线性渐变:使用
- 多色渐变配置:通过
ColorStops可添加多个颜色节点,第一个参数是位置(0.0到1.0),第二个是对应颜色,比如中间加黄色节点TColorStop.Create(0.5, TAlphaColorRec.Yellow)就能实现红-黄-蓝的渐变。 - 内存管理:
TGradientBrush需手动创建和释放,放在try...finally块中确保资源回收。
内容的提问来源于stack exchange,提问作者Ryan Beveridge
相关产品推荐
相关产品推荐

