![]() |
Bild auf TImage mit SVG Grafiken zusammenführen (Skia)
Hi,
ich versuche mich jetzt schon eine ganze Zeit lang an folgendem Problem. Ich bin dabei eine Komponente zu erstellen, auf der ich ein Bild "ändern" kann. Ändern in dem Sinne, dass ich Vektorgrafiken auf diesem Bild Platzieren kann und diese auch noch verschieben und die Größe ändern kann. Funktioniert auch ganz schön. Ich hab eine TImageControl, da lade ich ein Image rein. Dann habe ich eine TObjectList<TSkSvg>. Dort werden die Vektorgrafiken gesammelt. Ich müsste aber eine Funktion bereitstellen, die diese beiden Ebenen zusammen bringt. Also mir alles zusammen in ein Bild zu packen und mir dieses zurück zu liefern. TskSvg hat ein Canvas. Leider arbeitet FMX scheinbar nicht mehr so mit Canvas wie die VCL :oops: Ist das wirklich so schwierig, oder stelle ich mich einfach nur super dumm dran? Wäre um jeden Input dankbar. vG PJM |
AW: Bild auf TImage mit SVG Grafiken zusammenführen (Skia)
Okay, was ich bisher habe, stark vereinfachtes Beispiel, die Scales sind normal dynamisch und passen auch.
Delphi-Quellcode:
Wenn ich damit arbeite, bekomme ich meine SVG auf das Bild gezeichnet, aber nicht an die Stelle wo ich es gerne hätte. Hab die Befürchtung ich hab die Funktion von Canvas nicht wirklich verstanden :pale:
procedure MergeSVGAndImage;
var DestCanvas: TCanvas; PositionX: Single; PositionY: Single; SVGPoint: TSkSvg; Image1: TImage; lWidth: Single; lHeight: Single; lbitmap: TBitmap; const cScreenScale = 1; begin Image1 := TImage.Create(nil); try Image1.Bitmap.LoadFromFile('Some/Fancy/File.jpg'); SVGPoint := TSkSvg.Create(nil); try SVGPoint.Parent := Image1; SVGPoint.Svg.Source := 'SVG FILE SOURCE'; SVGPoint.Width := 42; SVGPoint.Height := 42; SVGPoint.Position.X := 42; SVGPoint.Position.Y := 42; DestCanvas := Image1.Bitmap.Canvas; DestCanvas.BeginScene; PositionX := SVGPoint.Position.X * cScreenScale; PositionY := SVGPoint.Position.Y * cScreenScale; lWidth := SVGPoint.Width * cScreenScale; lHeight := SVGPoint.Height * cScreenScale; SVGPoint.PaintTo(DestCanvas, RectF(PositionX, PositionY, lWidth, lHeight)); DestCanvas.EndScene; finally SVGPoint.Free; end; finally Image1.Free; end; end; Grüße PJM |
AW: Bild auf TImage mit SVG Grafiken zusammenführen (Skia)
Uff :oops:
Ich stand richtig auf dem Schlauch. Wenn man im Canvas Right und Bottom auch noch richtig setzt funktioniert es auch. So gehts jetzt:
Delphi-Quellcode:
Manchmal kann man sich nur an den Kopf greifen und den Kaffee eine Sufe stärker drehen.:roll:
PositionX := Measurement.SVGPoint.Position.X;
PositionY := Measurement.SVGPoint.Position.Y; lWidth := Measurement.SVGPoint.Width ; lHeight := Measurement.SVGPoint.Height ; SVGPoint.PaintTo(DestCanvas, RectF(PositionX, PositionY, lWidth + PositionX, lHeight + PositionY)); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz