Desenarea formelor și a semnelor de apă

Desenarea formelor și a semnelor de apă

Desenarea formelor și semnelor de apă

Documentele Word păstrează AutoShapes, imagini, casete de text și obiecte OLE într-un strat de desen separat, distinct de fluxul de text al paragrafelor/execuțiilor. Aspose.Words FOSS pentru .NET modelează acest strat cu clasa Shape (obiecte de desen concrete) și baza sa abstractă ShapeBase, ambele parte a spațiului de nume Aspose.Words.Drawing. Acest ghid acoperă modelul de formă, inserarea de imagini și AutoShapes, poziționarea și încadrarea, umpleri și efecte, gruparea și semnele de apă.


Modelul Shape și ShapeBase

Shape — sigilat și tipul cu care lucrați direct — reprezintă un AutoShape, casetă de text, formă liberă, obiect OLE, control ActiveX sau imagine în stratul de desen. Derivează din ShapeBase abstract, care furnizează proprietățile comune fiecărui obiect de desen: poziție (Left, Top, Width, Height, Rotation), valoarea enum ShapeType și sub-obiecte de formatare precum Fill, Stroke, ShadowFormat, Glow și Reflection. GroupShape (de asemenea un ShapeBase) reprezintă un grup de forme tratate ca o singură unitate. Construiți o formă independentă direct cu new Shape(doc, shapeType), unde shapeType este o valoare ShapeType precum Rectangle, Ellipse, Star sau TextBox, apoi inserați-o în arbore cu DocumentBuilder.InsertNode(node).


Inserarea imaginilor și AutoShapes cu DocumentBuilder

Pentru imagini în mod specific, DocumentBuilder.InsertImage este calea mai directă: suprasarcinile acceptă un Image, o cale de fișier, un Stream sau un tablou brut de octeți, cu alte suprasarcini care setează explicit width/height sau poziționare completă (horzPos, left, vertPos, top, width, height, wrapType). Shape rezultat expune datele imaginii prin proprietatea ImageData — ImageData.SetImage(...) pentru a înlocui imaginea, plus CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast și GrayScale pentru ajustări de bază. Instanțele GroupShape sunt create cu DocumentBuilder.InsertGroupShape(shapes).


Poziționare și încadrare a textului

Poziționarea unei forme în raport cu pagina este controlată de RelativeHorizontalPosition și RelativeVerticalPosition (fiecare relativ la Page, Margin, Column sau ancore similare), împreună cu proprietățile de decalaj Left/Top. HorizontalAlignment și VerticalAlignment gestionează alinierea relativă simplă. Modul în care textul înconjurător curge în jurul formei este setat cu WrapType și, pentru înfășurare specifică pe lateral, WrapSide. IsInline raportează dacă forma curge cu textul (inline) sau plutește independent.


Umpleri, Contururi și Efecte

Shape.Fill (un obiect Fill) controlează modul în care interiorul formei este pictat: Fill.Solid(color) pentru o culoare uniformă, Fill.OneColorGradient(...) / Fill.TwoColorGradient(...) pentru degradeuri, Fill.Patterned(patternType) pentru un model și Fill.SetImage(...) pentru o umplere cu imagine; FillType raportează care dintre acestea este activă. Conturul este controlat prin proprietatea Stroke, iar efectele vizuale sunt expuse ca obiecte de formatare separate — ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat) și SoftEdge (SoftEdgeFormat) — fiecare având propria metodă Remove() pentru a șterge efectul.


Gruparea Formelor și a Casetelor de Text

Mai multe forme pot fi combinate într-un GroupShape, care se comportă ca un singur ShapeBase cu propriile sale Fill, ShadowFormat, Glow și Reflection. Pentru o formă care conține text, Shape.TextBox (un obiect TextBox) expune aspectul specific textului: InternalMarginLeft/Right/Top/Bottom pentru spațiere internă, FitShapeToText pentru redimensionarea automată a formei, LayoutFlow pentru direcția textului și VerticalAnchor pentru alinierea verticală a textului în interiorul formei.


Watermarks

Document.Watermark (un obiect Watermark) gestionează un filigran la nivelul întregului document, independent de orice formă individuală. Apelați Watermark.SetText(text) sau SetText(text, options) pentru un filigran text, sau SetImage(...) pentru un filigran imagine, și Watermark.Remove() pentru a-l șterge. Watermark.Type raportează WatermarkType curent (Text, Image sau None). TextWatermarkOptions controlează FontFamily, FontSize, Color și Layout (WatermarkLayout.Horizontal sau Diagonal); ImageWatermarkOptions controlează Scale și IsWashout.


Sfaturi și Cele Mai Bune Practici

  • Folosește ShapeBase când scrii cod care trebuie să funcționeze atât pentru instanțe Shape simple, cât și GroupShape; folosește Shape direct când ai nevoie de membri specifici pentru imagine sau AutoShape, cum ar fi ImageData sau Chart.
  • Setează RelativeHorizontalPosition / RelativeVerticalPosition împreună cu WrapType atunci când plutești o formă — o formă în linie (implicită pentru InsertImage) ignoră proprietățile de poziționare până când o transformi în flotantă.
  • Preferă Document.Watermark pentru o filigrană unică la nivelul întregului document în loc să inserezi și să poziționezi manual un Shape în spatele textului.
  • Elimină un efect cu metoda Remove() a obiectului său (ShadowFormat.Remove(), ReflectionFormat.Remove()) în loc să setezi proprietăți individuale la zero.
  • Verifică Shape.HasImage, Shape.HasChart sau Shape.IsGroup înainte de a accesa ImageData, Chart sau membri specifici grupului, deoarece un Shape poate reprezenta oricare dintre mai multe tipuri de obiecte de desen.

Probleme comune

ProblemăCauzăRemediere
Setarea Left/Top pe o formă nu are niciun efect vizibilForma este încă în linie (IsInline == true)Setați WrapType la o valoare flotantă și setați RelativeHorizontalPosition/RelativeVerticalPosition pentru ca proprietățile de poziționare să aibă efect
Shape.ImageData aruncă sau este golForma nu este o formă imagineVerificați Shape.HasImage înainte de a citi ImageData
Textul de filigran nu corespunde fontului solicitatNu a fost furnizat TextWatermarkOptionsTransmiteți o instanță TextWatermarkOptions cu FontFamily setat la Watermark.SetText(text, options)
Formele copil ale unui grup nu se mișcă împreunăCopiii au fost repoziționați direct în loc de prin grupMutați sau redimensionați GroupShape în sine pentru ca transformarea sa de coordonate să se aplice tuturor copiilor

FAQ

Care este diferența dintre Shape și ShapeBase?

ShapeBase este clasa de bază abstractă partajată de Shape și GroupShape. Folosește ShapeBase în codul care trebuie să gestioneze ambele tipuri în mod uniform; folosește Shape când ai nevoie de membri specifici unui singur obiect de desen, cum ar fi ImageData sau Chart.

Cum adaug o imagine la un document?

Folosește una dintre suprasarcinile DocumentBuilder.InsertImage — transmite un Image, o cale de fișier, un Stream sau un tablou de octeți, opțional cu width/height sau cu argumente complete de poziționare.

Cum fac ca o formă să plutească în loc să stea în linie cu textul?

Setează WrapType la o valoare non-inline și setează RelativeHorizontalPosition / RelativeVerticalPosition astfel încât offset-urile Left/Top ale formei să fie interpretate în raport cu pagina, marginea sau coloana.

Pot adăuga atât un filigran text, cât și unul de imagine?

Document.Watermark.Type reflectă tipul curent de filigran; setarea unui filigran nou cu SetText sau SetImage înlocuiește orice era acolo înainte, astfel încât un document are cel mult un filigran activ la un moment dat.

Cum pot elimina o umbră sau o reflexie de pe o formă?

Apelă Remove() pe obiectul de formatare corespunzător — Shape.ShadowFormat.Remove() sau Shape.Reflection.Remove().


Rezumat API Reference

Clasă/MetodăDescriere:
ShapeUn singur obiect de strat de desen — AutoShape, imagine, casetă de text sau obiect OLE.
ShapeBaseClasă de bază abstractă partajată de Shape și GroupShape.
GroupShapeUn grup de forme tratat ca un singur obiect de desen.
DocumentBuilder.InsertImageInserează o formă de imagine la cursor, cu dimensiune și poziționare opționale.
ImageDataDatele imaginii și ajustările imaginii (decupare, luminozitate, contrast) pe un Shape.
FillFormatarea umpluturii interioare — solidă, gradient, model sau imagine.
RelativeHorizontalPosition / RelativeVerticalPositionLa ce este măsurată poziția unei forme plutitoare.
WrapType / WrapSideCum înfășoară textul înconjurător o formă.
TextBoxSetări de aspect al textului pentru o formă care conține text.
Document.WatermarkGestionează filigranul de text sau imagine al documentului.
TextWatermarkOptions / ImageWatermarkOptionsConfigurează aspectul filigranului de text sau imagine.

Vezi și:

 Română