Hur man lägger till ritningsformer i Word-dokument i .NET

Hur man lägger till ritningsformer i Word-dokument i .NET

Den här guiden visar hur man lägger till innehåll i ritningslagret i ett Word-dokument med Aspose.Words FOSS för .NET: infoga en AutoShape, lägga till en bild, placera den och omsluta text runt den, fylla i och stilisera den, gruppera flera former och sätta ett vattenmärke. Aspose.Words FOSS för .NET finns tillgänglig via NuGet eller genom att bygga från källkod.

Steg-för-steg-guide

Steg 1: Hämta biblioteket

Klona förrådet och bygg Aspose.Words.sln i Release-konfiguration, lägg sedan till en projektreferens till Aspose.Words.csproj från ditt eget .NET-projekt, enligt beskrivningen i installationsguiden. Lägg till using Aspose.Words; and using Aspose.Words.Drawing; längst upp i alla filer som arbetar med former.


Steg 2: Lägg till en AutoShape

Konstruera en form direkt med new Shape(doc, shapeType), där shapeType är ett ShapeType-värde såsom Rectangle, Ellipse, Star eller TextBox, och infoga den i trädet med DocumentBuilder.InsertNode(node). Shape är den konkreta, förseglade klass du konstruerar och konfigurerar; den ärver från den abstrakta ShapeBase, som definierar position (Left, Top, Width, Height, Rotation) och formateringsdelobjekt (Fill, Stroke, ShadowFormat, Glow, Reflection) som delas med GroupShape.


Steg 3: Lägg till en bild

DocumentBuilder.InsertImage är den direkta vägen för bilder: överlagringar accepterar en Image, en filsökväg, en Stream eller en rå bytearray, med ytterligare överlagringar som tar explicita width/height eller fullständiga placeringsargument (horzPos, left, vertPos, top, width, height, wrapType). Den resulterande Shapes ImageData-egenskap innehåller bilddata — anropa ImageData.SetImage(...) för att byta bilden, och använd CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast och GrayScale för grundläggande justeringar.


Steg 4: Positionera formen och omslut text

En inline-form (standardresultatet av InsertImage) flödar med den omgivande texten och ignorerar placeringsegenskaper tills den flyttas — kontrollera IsInline för att bekräfta i vilket läge en form befinner sig. För att flyta en form, sätt WrapType till ett icke-inline-värde och sätt RelativeHorizontalPosition / RelativeVerticalPosition (varje relativt Page, Margin, Column eller en liknande ankare) tillsammans med Left/Top-offsetsen. WrapSide styr sid-specifik omslag, och HorizontalAlignment / VerticalAlignment hanterar enkel relativ justering istället för explicita offset.


Steg 5: Fyll och stilisera formen

Shape.Fill (ett Fill-objekt) målar formens inre: Fill.Solid(color) för en enfärgad 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 som för närvarande är aktiv. Konturen kommer från Stroke-egenskapen. För effekter, ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat) och SoftEdge (SoftEdgeFormat) exponerar var och en sina egna inställningar och en Remove()-metod som rensar effekten tillbaka till ingen.


Steg 6: Gruppera flera former

Kombinera flera former till en enhet med DocumentBuilder.InsertGroupShape(shapes), som returnerar ett GroupShape. GroupShape är i sig ett ShapeBase, så det har sina egna Fill, ShadowFormat, Glow och Reflection som gäller för hela gruppen; flytta eller ändra storlek på GroupShape snarare än dess enskilda barn så att gruppens koordinattransform förblir konsistent. För en form som innehåller text, styr Shape.TextBox (ett TextBox-objekt) padding (InternalMarginLeft/Right/Top/Bottom), automatisk storleksanpassning (FitShapeToText), textriktning (LayoutFlow) och vertikal justering (VerticalAnchor).


Steg 7: Lägg till en vattenstämpel

Document.Watermark hanterar en enda dokumentomfattande vattenstämpel som är oberoende av någon form du har infogat manuellt. Anropa Watermark.SetText(text) eller SetText(text, options) för en textvattenstämpel, eller SetImage(...) för en bildvattenstämpel; Watermark.Remove() rensar den, och Watermark.Type rapporterar den aktuella WatermarkType (Text, Image eller None). TextWatermarkOptions ställer in FontFamily, FontSize, Color och Layout (WatermarkLayout.Horizontal eller Diagonal); ImageWatermarkOptions ställer in Scale och IsWashout.

Vanliga problem och lösningar

Setting Left/Top på en form har ingen synlig effekt. Formen är fortfarande inlineIsInline == true). Ställ in WrapType till ett flytande värde och sätt RelativeHorizontalPosition/RelativeVerticalPosition så att förskjutningsegenskaperna träder i kraft.

Shape.ImageData kastar eller returnerar ingenting. Formen är inte en bildform. Kontrollera Shape.HasImage innan läsning ImageData.

En grupps underformer rör sig inte tillsammans. Barnen omplacerades individuellt istället för via gruppen. Flytta eller ändra storlek på GroupShape sig själv så att dess koordinattransform gäller för alla barn.

Vattenstämpeltexten använder inte det begärda teckensnittet. Nej TextWatermarkOptions skickades. Anropa Watermark.SetText(text, options) med en TextWatermarkOptions instans vars FontFamily är inställd.

Vanliga frågor

Vad är skillnaden mellan Shape och ShapeBase?

ShapeBase är den abstrakta basklassen som delas av Shape och GroupShape. Skriv kod mot ShapeBase när den ska hantera någon av typerna enhetligt; använd Shape direkt för medlemmar som är specifika för ett enda ritobjekt, såsom ImageData.

Hur infogar jag en bild med en specifik storlek?

Använd en DocumentBuilder.InsertImage-överladdning som accepterar explicita width- och height-argument, tillsammans med bildkällan (en Image, filsökväg, Stream eller byte-array).

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 Left/Top-offsetsen tolkas relativt till sidan, marginalen eller kolumnen.

Kan ett dokument ha både en text- och en bildvattenstämpel samtidigt?

Nr. Document.Watermark.Type rapporterar den aktuella vattenstämpelns typ; att anropa SetText eller SetImage igen ersätter den vattenstämpel som tidigare satts.

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

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

Se även

 Svenska