Vormen en watermerken tekenen
Vormen tekenen en watermerken
Word-documenten bewaren AutoShapes, afbeeldingen, tekstvakken en OLE-objecten in een aparte tekenlaag, los van de alinea-/run-tekststroom. Aspose.Words FOSS voor .NET modelleert deze laag met de Shape-klasse (concrete tekenobjecten) en de abstracte basis ShapeBase, beide deel van de Aspose.Words.Drawing namespace. Deze gids behandelt het vormmodel, het invoegen van afbeeldingen en AutoShapes, positionering en omslag, vullingen en effecten, groeperen en watermerken.
Het Shape- en ShapeBase-model
Shape — sealed, en het type waarmee je rechtstreeks werkt — vertegenwoordigt een AutoShape, tekstvak, vrije vorm, OLE-object, ActiveX-besturingselement of afbeelding in de tekenlaag. Het is afgeleid van de abstracte ShapeBase, die de eigenschappen levert die elk tekenobject gemeen heeft: positie (Left, Top, Width, Height, Rotation), de ShapeType-enumwaarde, en opmaak-subobjecten zoals Fill, Stroke, ShadowFormat, Glow en Reflection. GroupShape (ook een ShapeBase) staat voor een groep vormen die als één eenheid wordt behandeld. Maak een zelfstandige vorm direct met new Shape(doc, shapeType), waarbij shapeType een ShapeType-waarde is, zoals Rectangle, Ellipse, Star of TextBox, en voeg deze vervolgens toe aan de boom met DocumentBuilder.InsertNode(node).
Invoegen van afbeeldingen en AutoShapes met DocumentBuilder
Voor afbeeldingen specifiek is DocumentBuilder.InsertImage de directere route: overloads accepteren een Image, een bestands-pad, een Stream of een ruwe byte-array, met extra overloads die expliciete width/height of volledige positionering (horzPos, left, vertPos, top, width, height, wrapType) instellen. Het resulterende Shape maakt zijn afbeeldingsdata beschikbaar via de ImageData-eigenschap — ImageData.SetImage(...) om de afbeelding te vervangen, plus CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast en GrayScale voor eenvoudige aanpassingen. GroupShape-instanties worden gecreëerd met DocumentBuilder.InsertGroupShape(shapes).
Positionering en tekstomslag
De plaatsing van een vorm ten opzichte van de pagina wordt geregeld door RelativeHorizontalPosition en RelativeVerticalPosition (elk ten aanzien van Page, Margin, Column of soortgelijke ankers), samen met de Left/Top offset-eigenschappen. HorizontalAlignment en VerticalAlignment regelen eenvoudige relatieve uitlijning. Hoe omringende tekst rond de vorm stroomt, wordt ingesteld met WrapType en, voor kant-specifieke omsluiting, WrapSide. IsInline geeft aan of de vorm met de tekst meeverplaatst (inline) of onafhankelijk zweeft.
Vullingen, Lijnen en Effecten
Shape.Fill (een Fill object) bepaalt hoe het interieur van de vorm wordt geschilderd: Fill.Solid(color) voor een effen kleur, Fill.OneColorGradient(...)/Fill.TwoColorGradient(...) voor verlopen, Fill.Patterned(patternType) voor een patroon, en Fill.SetImage(...) voor een afbeelding; FillType geeft aan welke hiervan actief is. De omtrek wordt geregeld via de Stroke eigenschap, en visuele effecten worden aangeboden als afzonderlijke opmaakobjecten — ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat), en SoftEdge (SoftEdgeFormat) — elk met een eigen Remove() methode om het effect te wissen.
Groeperen van Vormen en Tekstvakken
Meerdere vormen kunnen worden gecombineerd in een GroupShape, die zelf functioneert als een enkele ShapeBase met zijn eigen Fill, ShadowFormat, Glow en Reflection. Voor een vorm die tekst bevat, biedt Shape.TextBox (een TextBox object) tekst-specifieke lay-out: InternalMarginLeft/Right/Top/Bottom voor opvulling, FitShapeToText om de vorm automatisch te schalen, LayoutFlow voor tekstrichting, en VerticalAnchor voor verticale tekstuitlijning binnen de vorm.
Watermarks
Document.Watermark (een Watermark object) beheert een documentbrede watermerk onafhankelijk van een enkele vorm. Roep Watermark.SetText(text) of SetText(text, options) aan voor een tekst-watermerk, of SetImage(...) voor een afbeelding-watermerk, en Watermark.Remove() om het te verwijderen. Watermark.Type meldt de huidige WatermarkType (Text, Image of None). TextWatermarkOptions regelt FontFamily, FontSize, Color en Layout (WatermarkLayout.Horizontal of Diagonal); ImageWatermarkOptions bepaalt Scale en IsWashout.
Tips en best practices
- Gebruik
ShapeBasebij het schrijven van code die moet werken voor zowel enkeleShapealsGroupShapeinstanties; gebruikShaperechtstreeks wanneer je picture- of AutoShape-specifieke leden zoalsImageDataofChartnodig hebt. - Stel
RelativeHorizontalPosition/RelativeVerticalPositionin combinatie metWrapTypein wanneer je een vorm laat zweven — een inline-vorm (de standaard voorInsertImage) negeert positioneringseigenschappen totdat je deze laat zweven. - Kies bij voorkeur
Document.Watermarkvoor een enkel watermerk dat over het hele document geldt, in plaats van handmatig eenShapeachter de tekst in te voegen en te positioneren. - Wis een effect met de
Remove()-methode van het object (ShadowFormat.Remove(),ReflectionFormat.Remove()) i.p.v. individuele eigenschappen op nul te zetten. - Controleer
Shape.HasImage,Shape.HasChartofShape.IsGroupvoordat jeImageData,Chartof groepspecifieke leden benadert, omdat eenShapeelk van verschillende tekenobjecttypen kan vertegenwoordigen.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
Het instellen van Left/Top op een vorm heeft geen zichtbaar effect | De vorm is nog steeds inline (IsInline == true) | Stel WrapType in op een zwevende waarde en stel RelativeHorizontalPosition/RelativeVerticalPosition in zodat de positioneringseigenschappen effect hebben |
Shape.ImageData gooit een uitzondering of is leeg | De vorm is geen afbeeldingvorm | Controleer Shape.HasImage voordat u ImageData leest |
| Watermerktekst komt niet overeen met het aangevraagde lettertype | Er is geen TextWatermarkOptions opgegeven | Geef een TextWatermarkOptions-instantie door met FontFamily ingesteld op Watermark.SetText(text, options) |
| De onderliggende vormen van een groep bewegen niet gezamenlijk | Kinderen werden direct verplaatst, niet via de groep | Verplaats of wijzig de grootte van de GroupShape zelf zodat de coördinatentransformatie op alle kinderen wordt toegepast |
FAQ
Wat is het verschil tussen Shape en ShapeBase?
ShapeBase is de abstracte basisklasse die wordt gedeeld door Shape en GroupShape. Gebruik ShapeBase in code die beide soorten uniform moet behandelen; gebruik Shape wanneer je leden nodig hebt die specifiek zijn voor één enkel tekenobject, zoals ImageData of Chart.
Hoe voeg ik een afbeelding toe aan een document?
Gebruik een van de DocumentBuilder.InsertImage-overloads — geef een Image, een bestandspad, een Stream of een byte-array door, eventueel met width/height of volledige positioneringsargumenten.
Hoe kan ik een vorm laten zweven i.p.v. deze in de tekst te laten staan?
Stel zijn WrapType in op een niet-inline waarde en stel RelativeHorizontalPosition / RelativeVerticalPosition zo in dat de Left/Top-offsets van de vorm worden berekend op basis van de pagina, de marge of de kolom.
Kan ik zowel een tekst- als een afbeeldingswatermerk toevoegen?
Document.Watermark.Type geeft het huidige watermerktype weer; een nieuw watermerk instellen met SetText of SetImage vervangt wat er eerder stond, zodat een document maximaal één actief watermerk tegelijk kan hebben.
Hoe verwijder ik een schaduw of reflectie van een vorm?
Roep Remove() aan op het overeenkomstige opmaakobject — Shape.ShadowFormat.Remove() of Shape.Reflection.Remove().
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
Shape | Een enkel tekenlaag-object — AutoShape, afbeelding, tekstvak of OLE-object. |
ShapeBase | Abstracte basisklasse gedeeld door Shape en GroupShape. |
GroupShape | Een groep vormen die wordt behandeld als één tekenobject. |
DocumentBuilder.InsertImage | Voegt een afbeeldingsvorm in op de cursor, met optionele grootte en positionering. |
ImageData | De afbeeldingsgegevens en beeldaanpassingen (bijsnijden, helderheid, contrast) op een Shape. |
Fill | Interne opvulopmaak — effen, verloop, patroon of afbeelding. |
RelativeHorizontalPosition / RelativeVerticalPosition | Waar de positie van een zwevende vorm ten opzichte van wordt gemeten. |
WrapType / WrapSide | Hoe omringende tekst zich om een vorm wikkelt. |
TextBox | Tekstopmaakinstellingen voor een vorm die tekst bevat. |
Document.Watermark | Beheert het tekst- of afbeeldingswatermerk van het document. |
TextWatermarkOptions / ImageWatermarkOptions | Stel het uiterlijk van een tekst- of afbeeldingswatermerk in. |