Zeichnen von Formen und Wasserzeichen

Zeichnen von Formen und Wasserzeichen

Zeichnen von Formen und Wasserzeichen

Word-Dokumente behalten AutoShapes, Bilder, Textfelder und OLE-Objekte in einer separaten Zeichenebene, die vom Absatz-/Lauftextfluss getrennt ist. Aspose.Words FOSS für .NET modelliert diese Ebene mit der Klasse Shape (konkrete Zeichenobjekte) und ihrer abstrakten Basis ShapeBase, beide Teil des Aspose.Words.Drawing-Namespace. Dieses Handbuch behandelt das Formmodell, das Einfügen von Bildern und AutoShapes, Positionierung und Umbruch, Füllungen und Effekte, Gruppierung und Wasserzeichen.


Das Shape- und ShapeBase-Modell

Shape – versiegelt und der Typ, mit dem Sie direkt arbeiten – stellt ein AutoShape, Textfeld, Freiform, OLE-Objekt, ActiveX-Steuerelement oder Bild in der Zeichenebene dar. Es leitet sich von dem abstrakten ShapeBase ab, der die Eigenschaften bereitstellt, die jedes Zeichenobjekt gemeinsam hat: Position (Left, Top, Width, Height, Rotation), der ShapeType-Enum-Wert und Formatierungsunterobjekte wie Fill, Stroke, ShadowFormat, Glow und Reflection. GroupShape (auch ein ShapeBase) stellt eine Gruppe von Formen dar, die als eine Einheit behandelt werden. Erzeugen Sie eine eigenständige Form direkt mit new Shape(doc, shapeType), wobei shapeType ein ShapeType-Wert ist, z.B. Rectangle, Ellipse, Star oder TextBox, und fügen Sie sie dann mit DocumentBuilder.InsertNode(node) in den Baum ein.


Einfügen von Bildern und AutoShapes mit DocumentBuilder

Für Bilder speziell ist DocumentBuilder.InsertImage der direktere Weg: Überladungen akzeptieren ein Image, einen Dateipfad, ein Stream oder ein rohes Byte-Array, mit weiteren Überladungen, die explizite width/height oder eine vollständige Positionierung (horzPos, left, vertPos, top, width, height, wrapType) festlegen. Das resultierende Shape gibt seine Bilddaten über die Eigenschaft ImageData frei – ImageData.SetImage(...) zum Ersetzen des Bildes, plus CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast und GrayScale für grundlegende Anpassungen. GroupShape-Instanzen werden mit DocumentBuilder.InsertGroupShape(shapes) erstellt.


Positionierung und Textumbruch

Die Platzierung einer Form relativ zur Seite wird durch RelativeHorizontalPosition und RelativeVerticalPosition gesteuert (jeweils relativ zu Page, Margin, Column oder ähnlichen Ankern), zusammen mit den Left/Top-Versatz-Eigenschaften. HorizontalAlignment und VerticalAlignment übernehmen die einfache relative Ausrichtung. Wie der umgebende Text um die Form fließt, wird mit WrapType festgelegt und für seitenabhängiges Umbrechen mit WrapSide. IsInline gibt an, ob die Form mit dem Text (inline) fließt oder unabhängig schwebt.


Füllungen, Konturen und Effekte

Shape.Fill (ein Fill Objekt) steuert, wie das Innere der Form gemalt wird: Fill.Solid(color) für eine einfarbige Farbe, Fill.OneColorGradient(...) / Fill.TwoColorGradient(...) für Farbverläufe, Fill.Patterned(patternType) für ein Muster und Fill.SetImage(...) für eine Bildfüllung; FillType gibt an, welche davon aktiv ist. Die Kontur wird über die Eigenschaft Stroke gesteuert, und visuelle Effekte werden als separate Formatierungsobjekte bereitgestellt — ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat) und SoftEdge (SoftEdgeFormat) — jeweils mit ihrer eigenen Remove()-Methode zum Entfernen des Effekts.


Gruppieren von Formen und Textfeldern

Mehrere Formen können zu einem GroupShape kombiniert werden, das selbst wie ein einzelnes ShapeBase mit eigenen Fill, ShadowFormat, Glow und Reflection funktioniert. Für eine Form, die Text enthält, stellt Shape.TextBox (ein TextBox Objekt) layoutspezifische Einstellungen bereit: InternalMarginLeft/Right/Top/Bottom für den Innenabstand, FitShapeToText zum automatischen Anpassen der Größe der Form, LayoutFlow für die Textrichtung und VerticalAnchor für die vertikale Textausrichtung innerhalb der Form.


Watermarks

Document.Watermark (ein Watermark Objekt) verwaltet ein dokumentweites Wasserzeichen, das unabhängig von einzelnen Formen ist. Rufen Sie Watermark.SetText(text) oder SetText(text, options) für ein Textwasserzeichen auf, oder SetImage(...) für ein Bildwasserzeichen, und Watermark.Remove(), um es zu entfernen. Watermark.Type gibt das aktuelle WatermarkType (Text, Image oder None) zurück. TextWatermarkOptions steuert FontFamily, FontSize, Color und Layout (WatermarkLayout.Horizontal oder Diagonal); ImageWatermarkOptions steuert Scale und IsWashout.


Tipps und bewährte Verfahren

  • Verwenden Sie ShapeBase, wenn Sie Code schreiben, der sowohl für einzelne Shape als auch GroupShape Instanzen funktionieren soll; verwenden Sie Shape direkt, wenn Sie bild- oder AutoShape-spezifische Mitglieder wie ImageData oder Chart benötigen.
  • Setzen Sie RelativeHorizontalPosition / RelativeVerticalPosition zusammen mit WrapType, wenn Sie eine Form schwebend machen — eine Inline-Form (die Vorgabe für InsertImage) ignoriert Positionierungseigenschaften, bis Sie sie schwebend machen.
  • Bevorzugen Sie Document.Watermark für ein einzelnes, dokumentweites Wasserzeichen, anstatt manuell ein Shape hinter dem Text einzufügen und zu positionieren.
  • Löschen Sie einen Effekt mit der Remove()-Methode des Objekts (ShadowFormat.Remove(), ReflectionFormat.Remove()), anstatt einzelne Eigenschaften auf Null zu setzen.
  • Prüfen Sie Shape.HasImage, Shape.HasChart oder Shape.IsGroup, bevor Sie auf ImageData, Chart oder gruppenspezifische Mitglieder zugreifen, da ein Shape jede von mehreren Zeichenobjektarten darstellen kann.

Häufige Probleme

ProblemUrsacheLösung
Das Einstellen von Left/Top auf einer Form hat keine sichtbare WirkungDie Form ist immer noch inline (IsInline == true)Setze WrapType auf einen schwebenden Wert und setze RelativeHorizontalPosition/RelativeVerticalPosition, damit die Positionierungseigenschaften wirksam werden
Shape.ImageData wirft eine Ausnahme oder ist leerDie Form ist keine BildformÜberprüfen Sie Shape.HasImage bevor Sie ImageData lesen
Der Wasserzeichen-Text entspricht nicht der gewünschten SchriftartKein TextWatermarkOptions wurde angegebenÜbergeben Sie eine TextWatermarkOptions-Instanz, bei der FontFamily auf Watermark.SetText(text, options) gesetzt ist
Die Kindformen einer Gruppe bewegen sich nicht zusammenKindformen wurden direkt neu positioniert, anstatt über die GruppeVerschieben oder skalieren Sie das GroupShape selbst, sodass seine Koordinatentransformation auf alle Kinder angewendet wird

FAQ

Was ist der Unterschied zwischen Shape und ShapeBase?

ShapeBase ist die abstrakte Basisklasse, die von Shape und GroupShape gemeinsam genutzt wird. Verwenden Sie ShapeBase in Code, der beide Arten einheitlich behandeln soll; verwenden Sie Shape, wenn Sie Mitglieder benötigen, die einem einzelnen Zeichenobjekt spezifisch sind, wie ImageData oder Chart.

Wie füge ich einem Dokument ein Bild hinzu?

Verwenden Sie eine der DocumentBuilder.InsertImage-Überladungen — übergeben Sie ein Image, einen Dateipfad, ein Stream oder ein Byte-Array, optional mit width/height oder vollständigen Positionierungsargumenten.

Wie kann ich eine Form schweben lassen, anstatt sie inline mit dem Text zu platzieren?

Setzen Sie ihr WrapType auf einen Nicht-Inline-Wert und setzen Sie RelativeHorizontalPosition / RelativeVerticalPosition, sodass die Left/Top-Versätze der Form relativ zur Seite, zum Rand oder zur Spalte interpretiert werden.

Kann ich sowohl ein Text- als auch ein Bildwasserzeichen hinzufügen?

Document.Watermark.Type spiegelt den aktuellen Wasserzeichentyp wider; das Festlegen eines neuen Wasserzeichens mit SetText oder SetImage ersetzt das vorherige, sodass ein Dokument höchstens ein aktives Wasserzeichen gleichzeitig hat.

Wie entferne ich einen Schatten oder eine Spiegelung von einer Form?

Rufen Sie Remove() im entsprechenden Formatierungsobjekt auf — Shape.ShadowFormat.Remove() oder Shape.Reflection.Remove().


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
ShapeEin einzelnes Zeichnungsebene-Objekt — AutoShape, Bild, Textfeld oder OLE-Objekt.
ShapeBaseAbstrakte Basisklasse, die von Shape und GroupShape gemeinsam genutzt wird.
GroupShapeEine Gruppe von Formen, die als ein einzelnes Zeichenobjekt behandelt wird.
DocumentBuilder.InsertImageFügt eine Bildform an der Cursorposition ein, optional mit Größe und Positionierung.
ImageDataDie Bilddaten und Bildanpassungen (Zuschneiden, Helligkeit, Kontrast) auf einem Shape.
FillInnenfüllformatierung — einfarbig, Verlauf, Muster oder Bild.
RelativeHorizontalPosition / RelativeVerticalPositionWorauf die Position einer schwebenden Form relativ gemessen wird.
WrapType / WrapSideWie umgebender Text um eine Form fließt.
TextBoxTexteinstellungsoptionen für eine Form, die Text enthält.
Document.WatermarkVerwaltet das Text- oder Bildwasserzeichen des Dokuments.
TextWatermarkOptions / ImageWatermarkOptionsKonfigurieren Sie das Aussehen eines Text- oder Bildwasserzeichens.

Siehe auch

 Deutsch