Alakzatok és vízjelek rajzolása

Alakzatok és vízjelek rajzolása

Alakzatok rajzolása és vízjelek

Word-dokumentumok a AutoShapes, képeket, szövegdobozokat és OLE-objektumokat egy külön rajzrétegre helyezik, amely elkülönül a bekezdés/futam szövegáramlásától. Aspose.Words FOSS a .NET számára ezt a réteget a Shape osztállyal (konkrét rajzobjektumok) és annak absztrakt bázisával, a ShapeBase, modellezi, amelyek mind a Aspose.Words.Drawing névtér részei. Ez az útmutató a alakzatiemodellt, képek és AutoShapes beszúrását, a pozicionálást és körbefuttatást, kitöltéseket és hatásokat, csoportosítást, valamint a vízjeleket tárgyalja.


Az alakzat és a ShapeBase modell

Shape — lezárt, és közvetlenül a vele dolgozó típus — egy AutoShape, szövegdobozt, szabadformát, OLE-objektumot, ActiveX vezérlőt vagy képet képvisel a rajzrétegben. A ShapeBase absztrakt osztályból származik, amely minden rajzobjektumra jellemző tulajdonságokat biztosít: pozíció (Left, Top, Width, Height, Rotation), a ShapeType enum érték, valamint formázási alobjektumok, például Fill, Stroke, ShadowFormat, Glow és Reflection. GroupShape (amely szintén egy ShapeBase) egy egységként kezelt alakzategységet jelöl. Egy önálló alakzatot közvetlenül a new Shape(doc, shapeType) segítségével hozhatunk létre, ahol a shapeType egy ShapeType érték, például Rectangle, Ellipse, Star vagy TextBox, majd a DocumentBuilder.InsertNode(node) használatával illeszthető be a fába.


Képek és AutoShapes beszúrása a DocumentBuilder segítségével

Speciálisan a képek esetén a DocumentBuilder.InsertImage közvetlenebb út: a túlterhelések elfogadnak egy Image, egy fájlútvonalat, egy Stream vagy egy nyers bájt tömböt, további túlterhelésekkel, amelyek explicit width/height vagy teljes pozicionálást (horzPos, left, vertPos, top, width, height, wrapType) állítanak be. Az eredményül kapott Shape a képadatot a ImageData tulajdonságon keresztül teszi elérhetővé — ImageData.SetImage(...) a kép cseréjéhez, plusz CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast, és GrayScale az alapvető módosításokhoz. GroupShape példányok a DocumentBuilder.InsertGroupShape(shapes) segítségével jönnek létre.


Pozicionálás és szöveg körbefuttatása

Az alakzat oldalhoz viszonyított elhelyezése a RelativeHorizontalPosition és a RelativeVerticalPosition szabályozza (mindegyik a Page, Margin, Column vagy hasonló horgonyokhoz viszonyított), valamint a Left/Top eltolás tulajdonságokkal. A HorizontalAlignment és a VerticalAlignment egyszerű relatív igazítást kezelnek. A környező szöveg alakzat körüli elrendezését a WrapType állítja be, és oldalra vonatkozó tördeléshez a WrapSide. A IsInline jelzi, hogy az alakzat a szöveggel együtt folyik (inline) vagy önállóan lebeg.


Kitöltések, vonalstílusok és effektusok

Shape.Fill (egy Fill objektum) szabályozza, hogy hogyan festődik az alakzat belseje: Fill.Solid(color) egyszínű színhez, Fill.OneColorGradient(...)/Fill.TwoColorGradient(...) színátmenetekhez, Fill.Patterned(patternType) mintához, és Fill.SetImage(...) képpel való kitöltéshez; FillType jelzi, melyik van aktív. A körvonal a Stroke tulajdonsággal szabályozható, és a vizuális effektusok külön formázási objektumként érhetők el — ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat), és SoftEdge (SoftEdgeFormat) — mindegyik saját Remove() módszerrel törölhető.


Alakzatok és szövegdobozok csoportosítása

Több alakzat összevonható egy GroupShape-ba, amely maga is egyetlen ShapeBase-ként viselkedik, saját Fill, ShadowFormat, Glow és Reflection tulajdonságokkal. Szöveget tartalmazó alakzatra a Shape.TextBox (egy TextBox objektum) szövegspecifikus elrendezést tesz elérhetővé: InternalMarginLeft/Right/Top/Bottom a belső margóhoz, FitShapeToText az automatikus méretezéshez, LayoutFlow a szöveg irányához, és VerticalAnchor a függőleges szövegigazításhoz az alakzaton belül.


Watermarks

Document.Watermark (egy Watermark objektum) kezeli a dokumentum egészére kiterjedő vízjelet, amely független bármely egyedi alakzattól. Hívja a Watermark.SetText(text) vagy SetText(text, options) parancsot szöveges vízjelhez, vagy a SetImage(...) képes vízjelhez, és a Watermark.Remove() törli azt. Watermark.Type jelzi a jelenlegi WatermarkType (Text, Image vagy None). TextWatermarkOptions szabályozza a FontFamily, FontSize, Color és Layout (WatermarkLayout.Horizontal vagy Diagonal) beállításait; ImageWatermarkOptions a Scale és IsWashout értékeket kezeli.


Tippek és bevált gyakorlatok

  • Használd a ShapeBase-t, amikor olyan kódot írsz, amely egyetlen Shape és GroupShape példányon egyaránt működik; alkalmazd közvetlenül a Shape-t, ha kép- vagy AutoShape-specifikus tagokra van szükséged, például a ImageData vagy a Chart.
  • Állítsd be a RelativeHorizontalPosition/RelativeVerticalPosition értékeket a WrapType-vel együtt, amikor egy alakzatot lebegővé teszel – egy beágyazott alakzat (a InsertImage alapértelmezett beállítása) figyelmen kívül hagyja a pozicionálási tulajdonságokat, amíg nem teszed lebegővé.
  • Válaszd inkább a Document.Watermark-t egy dokumentumkiterjedő vízjelhez, ahelyett, hogy manuálisan beillesztenéd és pozícionálnád a Shape-t a szöveg mögé.
  • Töröld a hatást az objektum Remove() metódusával (ShadowFormat.Remove(), ReflectionFormat.Remove()), ahelyett, hogy az egyes tulajdonságokat nullára állítanád.
  • Ellenőrizd a Shape.HasImage, Shape.HasChart vagy Shape.IsGroup értékét, mielőtt a ImageData, Chart vagy csoportspecifikus tagokhoz férnél hozzá, mivel egy Shape többféle rajzobjektumot is képviselhet.

Gyakori problémák

ProblémaOkaJavítás
A Left/Top alkalmazása egy alakzaton nem eredményez látható változástAz alakzat még mindig inline (IsInline == true)Adjon WrapType lebegő értéket, és állítsa be RelativeHorizontalPosition/RelativeVerticalPosition értékeket, hogy a pozicionálási tulajdonságok érvénybe lépjenek
Shape.ImageData kivételt dob, vagy üresAz alakzat nem képalakzatEllenőrizze a Shape.HasImage értékét, mielőtt olvasná a ImageData.
A vízjel szövege nem egyezik a kért betűtípussal.Nem került megadásra TextWatermarkOptions.Adjon át egy TextWatermarkOptions példányt, ahol a FontFamily Watermark.SetText(text, options) értékre van állítva.
Egy csoport gyermek alakjai nem mozognak együtt.A gyermekek közvetlenül lettek áthelyezve a csoporton keresztül történő áthelyezés helyett.Mozgassa vagy méretezze át a GroupShape elemet, hogy koordináta-transzformációja minden gyermekre érvényesüljön.

FAQ

Mi a különbség a Shape és a ShapeBase között?

ShapeBase az absztrakt alaposztály, amelyet a Shape és a GroupShape közösen használnak. Használja a ShapeBase-t olyan kódban, amely egységesen kezeli a két típust; használja a Shape-t, ha egyetlen rajzobjektumra jellemző tagokra van szükség, például a ImageData vagy a Chart esetében.

Hogyan adhatok hozzá egy képet egy dokumentumhoz?

Használjon egyet a DocumentBuilder.InsertImage túlterhelései közül – adjon át egy Image-t, egy fájl útvonalát, egy Stream-t vagy egy bájt tömböt, opcionálisan width/height vagy teljes pozicionálási argumentumokkal.

Hogyan tehetem úgy, hogy egy alakzat úszó legyen a szöveggel egy sorban elhelyezkedése helyett?

Állítsa be a WrapType nem sorban lévő értékre, majd a RelativeHorizontalPosition/RelativeVerticalPosition úgy, hogy az alakzat Left/Top eltolásait az oldal, margó vagy oszlop szerint értelmezzék.

Hozzáadhatok egyszerre szöveges és képes vízjelet?

Document.Watermark.Type a jelenlegi vízjel típusát tükrözi; új vízjel beállítása a SetText vagy a SetImage segítségével felülírja a korábbit, így egy dokumentumnak egyszerre legfeljebb egy aktív vízjele lehet.

Hogyan távolíthatok el árnyékot vagy tükröződést egy alakzatról?

Hívja meg a(z) Remove() a megfelelő formázó objektumon – Shape.ShadowFormat.Remove() vagy Shape.Reflection.Remove().


API Reference összefoglaló

Osztály/MódszerLeírás
ShapeEgyetlen rajzréteg-objektum — AutoShape, kép, szövegdoboz vagy OLE-objektum.
ShapeBaseAbsztrakt alaposztály, amelyet a Shape és a GroupShape közösen használnak.
GroupShapeAlakzatok csoportja, amelyet egyetlen rajzobjektumként kezelnek.
DocumentBuilder.InsertImageBeszúr egy kép alakzatot a kurzor helyére, opcionális mérettel és pozicionálással.
ImageDataA kép adatai és a képszerkesztések (vágás, fényerő, kontraszt) egy Shape esetén.
FillBelső kitöltés formázása – egysíkú, színátmenetes, minta vagy kép.
RelativeHorizontalPosition / RelativeVerticalPositionAz a referencia, amelyhez a lebegő alakzat pozíciója viszonyítva van.
WrapType / WrapSideHogyan csomagolja be a környező szöveg az alakzatot.
TextBoxSzövegelrendezési beállítások egy szöveget tartalmazó alakzatra.
Document.WatermarkKezeli a dokumentum szöveges vagy képes vízjelét.
TextWatermarkOptions / ImageWatermarkOptionsÁllítsa be a szöveges vagy képes vízjel megjelenését.

Lásd még:

 Magyar