SVGファイルからTImageにベクター画像を描画しています。実行時にすべてのパスの色を別の色に変更したいのですが、次のコードは SVG の最初のパスのみの色を変更します。SVG のすべてのパスは同じ色 (黒 - #000000) です。すべてのパスの色を変更する方法を誰かが知っていますか?
...
img1: TImage; // TImage placed on the TForm1
...
procedure TForm1.DrawSVG(const aFileName: TFileName);
var
wSVGObject: IRSVGObject;
wSurface: IWin32Surface;
wContext: ICairoContext;
wRect: TRect;
begin
wSVGObject := TRSVGObject.Create(aFileName);
// img1 initialization
wRect.Left := 0;
wRect.Top := 0;
wRect.width := img1.width;
wRect.height := img1.height;
img1.Canvas.Brush.Color := clWhite;
img1.Canvas.FillRect(wRect);
wSurface := TWin32Surface.CreateHDC(img1.Canvas.Handle);
wContext := TCairoContext.Create(wSurface);
wContext.Antialias := CAIRO_ANTIALIAS_DEFAULT;
// try to change color of vector image, but only first path changes color
wContext.SetSourceRGB(0.5, 0.5, 0.5);
wContext.Rectangle(wRect.Left, wRect.Top, wRect.width, wRect.height);
wSurface.Flush;
wContext.FillPreserve;
wContext.RenderSVG(wSVGObject);
end;