Hogyan adjunk hozzá rajz alakzatokat a Word dokumentumokhoz .NET

Hogyan adjunk hozzá rajz alakzatokat a Word dokumentumokhoz .NET

Ez az útmutató bemutatja, hogyan adhatunk tartalmat a Word dokumentum rajzrétegéhez a Aspose.Words nyílt forráskódú szoftverrel .NET esetén: AutoShape beszúrása, kép hozzáadása, elhelyezése és a köré írt szöveg körbefuttatása, kitöltése és formázása, több alakzat csoportosítása, valamint vízjel beállítása. A Aspose.Words nyílt forráskódú szoftver .NET számára elérhető a NuGet vagy forrásból történő építéssel.

Lépésről-lépésre útmutató

Lépés 1: Szerezze be a könyvtárat

Klónozza a tárolót és építse fel Aspose.Words.sln Release konfigurációban, majd adjon hozzá egy projektreferenciát a Aspose.Words.csproj saját .NET projektjéből, ahogyan az Telepítési útmutatóban. Adjon hozzá using Aspose.Words; and using Aspose.Words.Drawing; bármely, alakzatokkal dolgozó fájl tetején.


Lépés 2: Adj hozzá egy AutoShape

Alakzatot közvetlenül a new Shape(doc, shapeType) segítségével hoz 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 illeszti be a fába. A Shape a konkrét, lezárt osztály, amelyet létrehoz és konfigurál; ez a ShapeBase absztrakt osztályból származik, amely meghatározza a pozíciót (Left, Top, Width, Height, Rotation) és a formázási alobjektumokat (Fill, Stroke, ShadowFormat, Glow, Reflection), amelyeket a GroupShape is megoszt.


3. lépés: Kép hozzáadása

DocumentBuilder.InsertImage a közvetlen út a képekhez: a túlterhelések elfogadnak egy Image-t, egy fájl elérési utat, egy Stream-t vagy egy nyers bájt tömböt, további túlterhelések pedig explicit width/height vagy teljes pozicionálási argumentumokat (horzPos, left, vertPos, top, width, height, wrapType) fogadnak. A keletkező Shape ImageData tulajdonsága tartalmazza a kép adatokat — hívd a ImageData.SetImage(...) metódust a kép cseréjéhez, és használd a CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast és GrayScale alapvető beállításokhoz.


4. lépés: Alakzat pozicionálása és szöveg körbefuttatása

Az inline alakzat (a InsertImage alapértelmezett eredménye) a környező szöveggel együtt áramlik, és figyelmen kívül hagyja a pozicionálási tulajdonságokat, amíg lebeg — ellenőrizd a IsInline elemet, hogy melyik módban van az alakzat. Ahhoz, hogy egy alakzat lebegjen, állítsd a WrapType értékét nem-inline-ra, és állítsd be a RelativeHorizontalPosition/RelativeVerticalPosition (mindegyik a Page, Margin, Column vagy hasonló horgonyhoz viszonyítva) együtt a Left/Top eltolásokkal. A WrapSide szabályozza az oldal-specifikus körbefuttatást, és a HorizontalAlignment/VerticalAlignment egyszerű relatív igazítást kezelnek a kifejezett eltolások helyett.


5. lépés: Alakzat kitöltése és stílusozása

A Shape.Fill (egy Fill objektum) kitölti az alakzat belsejét: Fill.Solid(color) egy egyszínű színhez, Fill.OneColorGradient(...)/Fill.TwoColorGradient(...) a színátmenetekhez, Fill.Patterned(patternType) egy mintához, és Fill.SetImage(...) egy képpel való kitöltéshez — a FillType jelzi, melyik van jelenleg aktív. A körvonal a Stroke tulajdonságból származik. Effektekhez a ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat) és SoftEdge (SoftEdgeFormat) mindegyike saját beállításokat és egy Remove() metódust kínál, amely visszaállítja az effektet semmire.


6. lépés: Több alakzat csoportosítása

Több alakzatot egy egységbe kombinálj a DocumentBuilder.InsertGroupShape(shapes) segítségével, amely egy GroupShape-t ad vissza. A GroupShape maga is egy ShapeBase, így saját Fill, ShadowFormat, Glow és Reflection tulajdonságokkal rendelkezik, amelyek a teljes csoportra vonatkoznak; mozdítsd vagy méretezd át a GroupShape-t az egyes gyermekek helyett, hogy a csoport koordináta-transzformációja konzisztens maradjon. Egy szöveget tartalmazó alakzat esetén a Shape.TextBox (egy TextBox objektum) szabályozza a belső margót (InternalMarginLeft/Right/Top/Bottom), az automatikus méretezést (FitShapeToText), a szöveg irányát (LayoutFlow) és a függőleges igazítást (VerticalAnchor).


7. lépés: Vízjel hozzáadása

Document.Watermark egyetlen, dokumentumszintű vízjelet kezel, amely független bármely általad manuálisan beszúrt alakzattól. Hívd a Watermark.SetText(text) vagy SetText(text, options) függvényt szöveges vízjelhez, vagy a SetImage(...) függvényt képes vízjelhez; a Watermark.Remove() törli azt, és a Watermark.Type visszaadja a jelenlegi WatermarkType (Text, Image vagy None). A TextWatermarkOptions beállítja a FontFamily, FontSize, Color és Layout értékeket (WatermarkLayout.Horizontal vagy Diagonal); a ImageWatermarkOptions beállítja a Scale és IsWashout értékeket.

Gyakori problémák és megoldások

Setting Left/Top egy alakzaton nincs látható hatása. Az alakzat továbbra is inlineIsInline == true). Állítsa be WrapType egy lebegő értékre és állítsa be RelativeHorizontalPosition/RelativeVerticalPosition hogy az eltolási tulajdonságok érvénybe lépjenek.

Shape.ImageData dob vagy nem ad vissza semmit. Az alakzat nem kép alakzat. Ellenőrizze Shape.HasImage olvasás előtt ImageData.

Egy csoport gyermek alakzatai nem mozognak együtt. A gyermekek egyenként lettek áthelyezve a csoporton keresztül történő áthelyezés helyett. Mozgassa vagy méretezze a GroupShape maga, ezért a koordináta-transzformációja minden gyermekre alkalmazandó.

A vízjel szövege nem a kért betűtípust használja. Nem TextWatermarkOptions át lett adva. Hívja Watermark.SetText(text, options) egy TextWatermarkOptions példánya, amelynek FontFamily be van állítva.

Gyakran Ismételt Kérdések

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

ShapeBase az az absztrakt alaposztály, amelyet a(z) Shape és a(z) GroupShape közösen használnak. Írj kódot a(z) ShapeBase ellen, ha egységesen kell kezelnie bármelyik típust; használd közvetlenül a(z) Shape-t olyan tagokhoz, amelyek egyetlen rajzobjektusra jellemzőek, például a(z) ImageData.

Hogyan szúrhatok be egy képet egy meghatározott mérettel?

Használj egy DocumentBuilder.InsertImage túlterhelést, amely kifejezett width és height argumentumokat fogad, valamint a képforrást (egy Image, fájl útvonal, Stream, vagy bájt tömb).

Hogyan tehetem az alakzatot lebegővé, ahelyett, hogy a szövegbe ágyazott legyen?

Állítsd be a(z) WrapType értékét nem inline értékre, és állítsd be a(z) RelativeHorizontalPosition / RelativeVerticalPosition értékeket úgy, hogy a(z) Left/Top eltolások az oldal, margó vagy oszlop viszonylatában legyenek értelmezve.

Lehet egy dokumentumnak egyszerre szöveges és képes vízjele?

A Document.Watermark.Type jelenti a jelenlegi vízjel típusát; a SetText vagy a SetImage újbóli meghívása felülírja a korábban beállított vízjelet.

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

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

Lásd még:

 Magyar