Rita former och vattenstämplar

Rita former och vattenstämplar

Rita former och vattenmärken

Word-dokument behåller AutoShapes, bilder, textrutor och OLE-objekt i ett separat ritlager, skilt från stycke-/körtextflödet. Aspose.Words FOSS för .NET modellerar detta lager med Shape-klassen (konkreta ritobjekt) och dess abstrakta bas ShapeBase, båda en del av Aspose.Words.Drawing-namnutrymmet. Denna guide täcker formmodellen, infogning av bilder och AutoShapes, positionering och omslag, fyllningar och effekter, gruppering och vattenmärken.


Formen och ShapeBase modellen

Shape — förseglad, och den typ du arbetar med direkt — representerar en AutoShape, textruta, fri form, OLE-objekt, ActiveX kontroll eller bild i ritlagret. Den ärver från den abstrakta ShapeBase, som tillhandahåller de egenskaper som delas av varje ritobjekt: position (Left, Top, Width, Height, Rotation), ShapeType-enumvärdet, och formateringsdelobjekt såsom Fill, Stroke, ShadowFormat, Glow och Reflection. GroupShape (även en ShapeBase) representerar en grupp former som behandlas som en enhet. Skapa en fristående form direkt med new Shape(doc, shapeType), där shapeType är ett ShapeType-värde såsom Rectangle, Ellipse, Star eller TextBox, och infoga sedan den i trädet med DocumentBuilder.InsertNode(node).


Infoga bilder och AutoShapes med DocumentBuilder

För bilder specifikt är DocumentBuilder.InsertImage den mer direkta vägen: överlagringar accepterar en Image, en filsökväg, en Stream eller en rå byte-array, med ytterligare överlagringar som ställer in explicit width/height eller full positionering (horzPos, left, vertPos, top, width, height, wrapType). Det resulterande Shape exponerar sin bilddata via egenskapen ImageData — ImageData.SetImage(...) för att ersätta bilden, samt CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast och GrayScale för grundläggande justeringar. GroupShape-instanser skapas med DocumentBuilder.InsertGroupShape(shapes).


Positionering och textomslag

En formens placering i förhållande till sidan styrs av RelativeHorizontalPosition och RelativeVerticalPosition (varje relativt Page, Margin, Column eller liknande ankare), tillsammans med Left/Top förskjutningsegenskaper. HorizontalAlignment och VerticalAlignment hanterar enkel relativ justering. Hur omgivande text flödar runt formen ställs in med WrapType och, för sid-specifik omslagning, WrapSide. IsInline rapporterar om formen flödar med texten (inline) eller flyter oberoende.


Fyllningar, konturer och effekter

Shape.Fill (ett Fill objekt) styr hur formens inre målas: Fill.Solid(color) för en enhetlig färg, Fill.OneColorGradient(...) / Fill.TwoColorGradient(...) för gradienter, Fill.Patterned(patternType) för ett mönster, och Fill.SetImage(...) för en bildfyllning; FillType rapporterar vilken av dessa som är aktiv. Konturen styrs via egenskapen Stroke, och visuella effekter exponeras som separata formateringsobjekt — ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat), och SoftEdge (SoftEdgeFormat) — var och en med sin egen Remove() metod för att rensa effekten.


Gruppering av former och textrutor

Flera former kan kombineras till en GroupShape, som själv beter sig som en enda ShapeBase med sina egna Fill, ShadowFormat, Glow och Reflection. För en form som innehåller text, Shape.TextBox (ett TextBox objekt) exponerar textspecifik layout: InternalMarginLeft/Right/Top/Bottom för utfyllnad, FitShapeToText för automatisk storleksanpassning av formen, LayoutFlow för textriktning, och VerticalAnchor för vertikal textjustering inom formen.


Watermarks

Document.Watermark (ett Watermark objekt) hanterar en dokumentomfattande vattenstämpel oberoende av någon enskild form. Anropa Watermark.SetText(text) eller SetText(text, options) för en textvattenstämpel, eller SetImage(...) för en bildvattenstämpel, och Watermark.Remove() för att rensa den. Watermark.Type rapporterar den aktuella WatermarkType (Text, Image eller None). TextWatermarkOptions styr FontFamily, FontSize, Color och Layout (WatermarkLayout.Horizontal eller Diagonal); ImageWatermarkOptions styr Scale och IsWashout.


Tips och bästa praxis

  • Använd ShapeBase när du skriver kod som ska fungera för både enskilda Shape och GroupShape instanser; använd Shape direkt när du behöver bild- eller AutoShape-specifika medlemmar som ImageData eller Chart.
  • Ställ in RelativeHorizontalPosition / RelativeVerticalPosition tillsammans med WrapType när du flyttar en form — en inline-form (standard för InsertImage) ignorerar positioneringsegenskaper tills du får den att flyta.
  • Föredra Document.Watermark för ett enda dokumentomfattande vattenmärke istället för att manuellt infoga och placera en Shape bakom texten.
  • Rensa en effekt med objektets Remove()-metod (ShadowFormat.Remove(), ReflectionFormat.Remove()) istället för att sätta enskilda egenskaper till noll.
  • Kontrollera Shape.HasImage, Shape.HasChart eller Shape.IsGroup innan du får åtkomst till ImageData, Chart eller gruppspecifika medlemmar, eftersom en Shape kan representera någon av flera typer av ritobjekt.

Vanliga problem

ProblemOrsakÅtgärd
Att ange Left/Top på en form har ingen synlig effektFormen är fortfarande inline (IsInline == true)Ställ in WrapType till ett flytande värde och ange RelativeHorizontalPosition/RelativeVerticalPosition så att placeringsegenskaperna får effekt
Shape.ImageData kastar eller är tomFormen är inte en bildformKontrollera Shape.HasImage innan du läser ImageData
Vattenstämpelns text matchar inte den begärda typsnittetIngen TextWatermarkOptions angavsSkicka en TextWatermarkOptions-instans med FontFamily satt till Watermark.SetText(text, options)
Barnformerna i en grupp rör sig inte tillsammansBarnen omplacerades direkt istället för via gruppenFlytta eller ändra storleken på GroupShape själv så att dess koordinattransformering gäller för alla barn

FAQ

Vad är skillnaden mellan Shape och ShapeBase?

ShapeBase är den abstrakta basklassen som delas av Shape och GroupShape. Använd ShapeBase i kod som ska hantera båda typerna enhetligt; använd Shape när du behöver medlemmar som är specifika för ett enskilt ritobjekt, såsom ImageData eller Chart.

Hur lägger jag till en bild i ett dokument?

Använd en av DocumentBuilder.InsertImage overloads — skicka en Image, en filsökväg, en Stream eller en bytearray, eventuellt med width/height eller fullständiga placeringsargument.

Hur får jag en form att flyta istället för att ligga inline med texten?

Ställ in dess WrapType till ett icke-inline-värde och sätt RelativeHorizontalPosition / RelativeVerticalPosition så att formens Left/Top-offsets tolkas relativt till sidan, marginalen eller kolumnen.

Kan jag lägga till både en text- och en bildvattenstämpel?

Document.Watermark.Type speglar den aktuella vattenstämpeltypen; att ange en ny vattenstämpel med SetText eller SetImage ersätter vad som än fanns tidigare, så ett dokument har som mest en aktiv vattenstämpel åt gången.

Hur tar jag bort en skugga eller reflektion från en form?

Anropa Remove() på det motsvarande formateringsobjektet — Shape.ShadowFormat.Remove() eller Shape.Reflection.Remove().


API Reference Sammanfattning

Klass/MetodBeskrivning
ShapeEtt enda ritningslagerobjekt — AutoShape, bild, textruta eller OLE-objekt.
ShapeBaseAbstrakt basklass som delas av Shape och GroupShape.
GroupShapeEn grupp former som behandlas som ett ritningsobjekt.
DocumentBuilder.InsertImageInfogar en bildform vid markören, med valfri storlek och placering.
ImageDataBilddata och bildjusteringar (beskärning, ljusstyrka, kontrast) på en Shape.
FillFormatering för innermaterial – solid, gradient, mönster eller bild.
RelativeHorizontalPosition / RelativeVerticalPositionVad en svävande formes position mäts i förhållande till.
WrapType / WrapSideHur omgivande text flödar runt en form.
TextBoxInställningar för textlayout för en form som innehåller text.
Document.WatermarkHantera dokumentets text- eller bildvattenstämpel.
TextWatermarkOptions / ImageWatermarkOptionsKonfigurera utseendet för en text- eller bildvattenstämpel.

Se även

 Svenska