You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 14:52:11