如何在 Delphi 12.1 中使用 Skia 加载 SVG 文件到 TBitmap 并保留透明度

如何在 Delphi 12.1 中使用 Skia 加载 SVG 文件到 TBitmap 并保留透明度-Delphi 大神网
如何在 Delphi 12.1 中使用 Skia 加载 SVG 文件到 TBitmap 并保留透明度
此内容为付费阅读,请付费后查看
0.5
立即购买
您当前未登录!建议登陆后购买,可保存购买订单
付费阅读
欢迎加入全网最大Delphi 技术交流群 682628230

在 Delphi 12.1 的 32 位 VCL 应用程序中,如何通过 Skia 将 SVG 文件加载到 TBitmap 并保留透明度?Skia 是 Delphi 12 自带的图形库,但在加载 SVG 文件时可能会遇到问题。

 

通过 TBitmap.SkiaDraw 方法可以加载 SVG 文件,但需要提前设置 TBitmap 的尺寸、像素格式和透明背景。以下是实现步骤:

  1. 1. 初始化 TBitmap
    在调用 SkiaDraw 之前,需要设置 TBitmap 的宽度、高度、像素格式,并清除为透明背景。
  2. 2. 示例代码
    以下是一个完整的示例代码,展示如何加载 SVG 文件到 TBitmap 并保留透明度:
bmp := TBitmap.Create;
try
  // 设置位图尺寸
  bmp.Width := 100;
  bmp.Height := 100;

  // 设置像素格式为 32 位以支持透明度
  bmp.PixelFormat := pf32bit;

  // 清除位图为透明背景
  bmp.Canvas.Brush.Color := clNone;
  bmp.Canvas.FillRect(Rect(0, 0, bmp.Width, bmp.Height));

  // 启用透明度支持
  bmp.Transparent := True;

  // 使用 SkiaDraw 加载 SVG 文件
  bmp.SkiaDraw(
    procedure(const ACanvas: System.Skia.ISKCanvas)
    var
      LSvgBrush: Vcl.Skia.TSkSvgBrush;
    begin
      LSvgBrush := Vcl.Skia.TSkSvgBrush.Create;
      try
        // 读取 SVG 文件内容
        LSvgBrush.Source := TFile.ReadAllText('path/to/your/file.svg');
        // 渲染 SVG 到位图
        LSvgBrush.Render(ACanvas, System.Types.RectF(0, 0, 100.0, 100.0), 1);
      finally
        LSvgBrush.Free;
      end;
    end);
finally
  bmp.Free;
end;

 

通过正确初始化 TBitmap 并使用 SkiaDraw 方法,可以将 SVG 文件加载到 TBitmap 并保留透明度。关键在于设置位图的尺寸、像素格式和透明背景。

 

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享