SVG-Skalierung – C#-Beispiele

So skalieren Sie SVG-C#-Code

Mit der Aspose.SVG for .NET-Bibliothek können Sie eine Skalierungstransformation programmgesteuert durchführen. In diesem Artikel wurden C#-Beispiele für die SVG-Skalierung behandelt. Berücksichtigte Fälle der Verwendung der Funktion scale() im Attribut transform sowie einer Transformationsmatrix matrix(a,b,c,d,e,f).

Scale()-Funktion

Skalierung ist eine SVG-Transformation, die ein Objekt mithilfe eines Skalierungsfaktors vergrößert oder verkleinert. Man muss zwischen gleichmäßiger und gerichteter Skalierung unterscheiden. Die Transformationsfunktion scale(sx, sy) ermöglicht die Skalierung von Bildern entlang der x- und y-Achse. Der Wert des Skalierungsfaktors sy ist optional, und wenn er weggelassen wird, wird davon ausgegangen, dass er gleich sx ist.

Der folgende C#-Codeausschnitt zeigt, wie man ein SVG-Element <circle> erstellt, seine Attribute festlegt und eine Transformation mithilfe der Funktion scale() für das Attribut transform anwendet.

  1. Erstellen Sie eine Instanz der Klasse SVGDocument. Die Eigenschaft RootElement verweist auf das Stammelement <svg> des Dokuments.
  2. Erstellen Sie ein <circle>-Element und legen Sie die erforderlichen Attribute fest.
    • Sie können die Methode CreateElementNS() verwenden, um eine Instanz der Klasse SVGCircleElement zu erstellen.
    • Rufen Sie die Methode SetAttribute() auf, um Attribute festzulegen, die Position, Größe, Füllung und Transformation angeben. Verwenden Sie die Funktion scale() für das Attribut transform, das eine Skalierungstransformation angibt. Insbesondere bedeutet scale(2), das <circle>-Element sowohl in der x- als auch in der y-Dimension um den Faktor 2 zu skalieren.
  3. Um das circleElement zu svgElement hinzuzufügen, können Sie die Methode AppendChild() verwenden.
  4. Rufen Sie die Methode Save() auf, um das resultierende SVG-Bild in einer durch den Pfad angegebenen lokalen Datei zu speichern.
 1using Aspose.Svg;
 2using System.IO;
 3...
 4
 5    // Create a new SVG document
 6	using (var document = new SVGDocument())
 7	{
 8		var svgElement = document.RootElement;
 9
10		// Create a rect element and set its attributes
11		var circleElement = (SVGCircleElement)document.CreateElementNS("http://www.w3.org/2000/svg", "circle");
12		circleElement.Cx.BaseVal.Value = 100;
13		circleElement.Cy.BaseVal.Value = 100;
14		circleElement.R.BaseVal.Value = 50;
15		circleElement.SetAttribute("fill", "salmon");
16
17		// Apply scaling to the SVG circle
18		circleElement.SetAttribute("transform", "scale(2)");
19
20		// Append the rect element to the SVG
21		svgElement.AppendChild(circleElement);
22
23		// Save the document
24		document.Save(Path.Combine(OutputDir, "scale-circle.svg"));
25    }

SVG-Transformationsmatrix – Skalierungsmatrix

Hier sehen wir uns das C#-Beispiel für die Skalierung eines gesamten SVG-Bildes anstelle eines einzelnen Elements an und implementieren die Transformation mithilfe einer Skalierungsmatrix. Schauen wir uns den C#-Code zum Anwenden der Skalenmatrix genauer an.

  1. Laden Sie eine SVG-Quelldatei mit einem der SVGDocument()-Konstruktoren.
  2. Holen Sie sich das Stammelement <svg> des Dokuments.
  1. Verwenden Sie die Methode GetCTM() der Klasse SVGGraphicsElement, die die aktuelle Transformationsmatrix (CTM) zurückgibt, die dem Element <svg> zugeordnet ist. Das CTM stellt die kumulativen Transformationen dar, die auf das Element angewendet werden, und enthält Informationen zu Übersetzung, Skalierung, Skalierung und Verzerrung, die auf das Element angewendet werden können.
  2. Nachdem Sie das CTM erhalten haben, verwenden Sie die Methode Scale(), die eine Skalentransformation auf der aktuellen Matrix nachmultipliziert und die resultierende Matrix zurückgibt. Die Scale(scaleFactor)-Methode benötigt nur ein Argument – ​scaleFactor. Dieser Parameter ist obligatorisch und stellt die Skalierung sowohl auf der X- als auch auf der Y-Achse dar, die Sie anwenden möchten.
  3. Konstruieren Sie ein transformAttribute – eine String-Darstellung einer 2D-Transformationsmatrix unter Verwendung der Werte aus der modifizierten Transformationsmatrix transformationMatrix. Die Matrixschreibweise ist matrix(a, b, c, d, e, f).
  4. Rufen Sie die Methode SetAttribute() auf, um das Attribut transform des Elements <svg> mithilfe der Zeichenfolge transformAttribute festzulegen.
  5. Rufen Sie die Methode Save() auf, um das resultierende SVG-Bild in einer lokalen Datei zu speichern.
 1using Aspose.Svg;
 2using System.IO;
 3...
 4
 5	// Load an SVG document
 6	string documentPath = Path.Combine(DataDir, "snowflake.svg");
 7
 8	using (var document = new SVGDocument(documentPath))
 9	{
10		var svgElement = document.RootElement;
11
12		// Get the transformation matrix associated with the svgElement
13		var transformationMatrix = svgElement.GetCTM();
14		transformationMatrix = transformationMatrix.Scale(0.5F);
15
16		// Apply the transformation matrix to the svgElement
17		var transformAttribute = "matrix(" + transformationMatrix.A + "," + transformationMatrix.B + ","
18			+ transformationMatrix.C + "," + transformationMatrix.D + "," + transformationMatrix.E + ","
19			+ transformationMatrix.F + ")";
20		svgElement.SetAttribute("transform", transformAttribute);
21
22		// Save the document
23		document.Save(Path.Combine(OutputDir, "scale-svg.svg"));
24	}

Die folgende Abbildung zeigt das Original-SVG (a) und das skalierte Bild mit einem Skalierungsfaktor von 0,5 – das verkleinerte Bild (b).

Text „Die Abbildung zeigt das Original-SVG (a) und das skalierte Bild (b).“

Siehe auch

  • Sie können die vollständigen Beispiele und Datendateien von GitHub herunterladen.
  • Informationen zum Herunterladen von GitHub und zum Ausführen von Beispielen finden Sie im Abschnitt So führen Sie die Beispiele aus.
  • Um zu erfahren, wie Sie eine Transformationsmatrix zum Drehen, Skalieren, Übersetzen und Verzerren von SVG-Grafiken verwenden und SVG-Codebeispiele berücksichtigen, lesen Sie bitte den Artikel Transformationsmatrix – SVG-Codebeispiele.
  • Lesen Sie den Artikel SVG-Transformation, um mehr zu erfahren und SVG-Codebeispiele zum Drehen, Skalieren, Verschieben und Neigen von SVG-Grafiken mithilfe des SVG-Transformationsattributs zu erhalten.
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.