Σχεδίαση Σχημάτων και Υδατογραφιών
Σχεδίαση Σχημάτων και Υδατογραφήματα
Τα έγγραφα Word διατηρούν AutoShapes, εικόνες, πλαίσια κειμένου και αντικείμενα OLE σε ξεχωριστό επίπεδο σχεδίασης, διαχωρισμένο από τη ροή κειμένου παραγράφου/τρέχουσας. Aspose.Words FOSS για .NET μοντελοποιεί αυτό το επίπεδο με την κλάση Shape (συγκεκριμένα αντικείμενα σχεδίασης) και τη αφηρημένη βάση της ShapeBase, και τα δύο μέρος του ονοματοχώρου Aspose.Words.Drawing. Αυτός ο οδηγός καλύπτει το μοντέλο σχήματος, την εισαγωγή εικόνων και AutoShapes, την τοποθέτηση και την αναδίπλωση, γεμίσματα και εφέ, ομαδοποίηση και υδατογραφήματα.
Το Σχήμα και το Μοντέλο ShapeBase
Shape — κλεισμένο, και ο τύπος με τον οποίο εργάζεστε άμεσα — αντιπροσωπεύει ένα AutoShape, πλαίσιο κειμένου, ελεύθερη μορφή, αντικείμενο OLE, έλεγχο ActiveX ή εικόνα στο επίπεδο σχεδίασης. Προέρχεται από την αφηρημένη ShapeBase, η οποία παρέχει τις ιδιότητες που μοιράζονται όλα τα αντικείμενα σχεδίασης: θέση (Left, Top, Width, Height, Rotation), η τιμή του enum ShapeType, και υπο-αντικείμενα μορφοποίησης όπως Fill, Stroke, ShadowFormat, Glow και Reflection. GroupShape (επίσης ένα ShapeBase) αντιπροσωπεύει μια ομάδα σχημάτων που αντιμετωπίζεται ως μία μονάδα. Δημιουργήστε ένα αυτόνομο σχήμα απευθείας με new Shape(doc, shapeType), όπου το shapeType είναι μια τιμή ShapeType όπως Rectangle, Ellipse, Star ή TextBox, και, στη συνέχεια, εισάγετε το στο δέντρο με DocumentBuilder.InsertNode(node).
Εισαγωγή Εικόνων και AutoShapes με DocumentBuilder
Για τις εικόνες ειδικά, το DocumentBuilder.InsertImage είναι η πιο άμεση διαδρομή: οι υπερφορτώσεις δέχονται ένα Image, μια διαδρομή αρχείου, ένα Stream ή έναν ακατέργαστο πίνακα bytes, με περαιτέρω υπερφορτώσεις που ορίζουν ρητά width/height ή πλήρη τοποθέτηση (horzPos, left, vertPos, top, width, height, wrapType). Το αποτέλεσμα Shape αποκαλύπτει τα δεδομένα της εικόνας μέσω της ιδιότητας ImageData — ImageData.SetImage(...) για αντικατάσταση της εικόνας, συν CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast και GrayScale για βασικές ρυθμίσεις. Τα αντικείμενα GroupShape δημιουργούνται με DocumentBuilder.InsertGroupShape(shapes).
Τοποθέτηση και Αναδίπλωση Κειμένου
Η τοποθέτηση ενός σχήματος σε σχέση με τη σελίδα ελέγχεται από το RelativeHorizontalPosition και το RelativeVerticalPosition (κάθε ένα σε σχέση με το Page, Margin, Column ή παρόμοιους άγκυρους), μαζί με τις ιδιότητες μετατόπισης Left/Top. Τα HorizontalAlignment και VerticalAlignment διαχειρίζονται την απλή σχετική στοίχιση. Πώς το κείμενο γύρω από το σχήμα ρέει ορίζεται με το WrapType και, για περιτύλιξη ανά πλευρά, το WrapSide. Το IsInline αναφέρει εάν το σχήμα ρέει με το κείμενο (ενσωματωμένο) ή αιωρείται ανεξάρτητα.
Γέμισμα, Περιγράμματα και Εφέ
Shape.Fill (ένα αντικείμενο Fill) ελέγχει πώς χρωματίζεται το εσωτερικό του σχήματος: Fill.Solid(color) για μονόχρωμο, Fill.OneColorGradient(...) / Fill.TwoColorGradient(...) για διαβαθμίσεις, Fill.Patterned(patternType) για μοτίβο, και Fill.SetImage(...) για γέμισμα εικόνας· FillType αναφέρει ποιο από αυτά είναι ενεργό. Η περιγράμμιση ελέγχεται μέσω της ιδιότητας Stroke, και τα οπτικά εφέ εκτίθενται ως ξεχωριστά αντικείμενα μορφοποίησης — ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat), και SoftEdge (SoftEdgeFormat) — το καθένα με τη δική του μέθοδο Remove() για να αφαιρέσει το εφέ.
Ομαδοποίηση Σχημάτων και Πλαισίων Κειμένου
Πολλά σχήματα μπορούν να συνδυαστούν σε ένα GroupShape, το οποίο λειτουργεί ως ένα ενιαίο ShapeBase με τα δικά του Fill, ShadowFormat, Glow και Reflection. Για ένα σχήμα που περιέχει κείμενο, το Shape.TextBox (ένα αντικείμενο TextBox) αποκαλύπτει τη διάταξη ειδική για κείμενο: InternalMarginLeft/Right/Top/Bottom για το περιθώριο, FitShapeToText για αυτόματο μέγεθος του σχήματος, LayoutFlow για την κατεύθυνση του κειμένου, και VerticalAnchor για την κατακόρυφη στοίχιση του κειμένου μέσα στο σχήμα.
Watermarks
Document.Watermark (ένα αντικείμενο Watermark) διαχειρίζεται ένα υδατογράφημα σε όλο το έγγραφο, ανεξάρτητα από οποιοδήποτε μεμονωμένο σχήμα. Καλέστε Watermark.SetText(text) ή SetText(text, options) για υδατογράφημα κειμένου, ή SetImage(...) για υδατογράφημα εικόνας, και Watermark.Remove() για να το αφαιρέσετε. Το Watermark.Type αναφέρει το τρέχον WatermarkType (Text, Image ή None). Το TextWatermarkOptions ελέγχει τα FontFamily, FontSize, Color και Layout (WatermarkLayout.Horizontal ή Diagonal); το ImageWatermarkOptions ελέγχει τα Scale και IsWashout.
Συμβουλές και Καλές Πρακτικές
- Χρησιμοποιήστε το
ShapeBaseόταν γράφετε κώδικα που πρέπει να λειτουργεί τόσο για μεμονωμένεςShapeόσο και γιαGroupShapeπεριπτώσεις· χρησιμοποιήστε τοShapeαπευθείας όταν χρειάζεστε μέλη ειδικά για εικόνα ή AutoShape, όπως τοImageDataή τοChart. - Ορίστε το
RelativeHorizontalPosition/RelativeVerticalPositionμαζί με τοWrapTypeόταν αιωρείτε ένα σχήμα — ένα ενσωματωμένο σχήμα (η προεπιλογή για τοInsertImage) αγνοεί τις ιδιότητες τοποθέτησης μέχρι να το κάνετε να αιωρείται. - Προτιμήστε το
Document.Watermarkγια ένα ενιαίο υδατογράφημα σε όλο το έγγραφο αντί να εισάγετε και να τοποθετήσετε χειροκίνητα έναShapeπίσω από το κείμενο. - Καθαρίστε ένα εφέ με τη μέθοδο
Remove()του αντικειμένου (ShadowFormat.Remove(),ReflectionFormat.Remove()) αντί να ορίζετε μεμονωμένες ιδιότητες στο μηδέν. - Ελέγξτε το
Shape.HasImage, τοShape.HasChartή τοShape.IsGroupπριν αποκτήσετε πρόσβαση σταImageData,Chartή σε μέλη συγκεκριμένα για ομάδες, καθώς έναShapeμπορεί να αντιπροσωπεύει οποιοδήποτε από τα διάφορα είδη αντικειμένων σχεδίασης.
Κοινά Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
Η ρύθμιση Left/Top σε ένα σχήμα δεν έχει ορατό αποτέλεσμα | Το σχήμα είναι ακόμη ενσωματωμένο (IsInline == true) | Ορίστε το WrapType σε τιμή πλωτής και ορίστε το RelativeHorizontalPosition/RelativeVerticalPosition ώστε οι ιδιότητες τοποθέτησης να ισχύσουν |
Το Shape.ImageData αποτυγχάνει ή είναι κενό | Το σχήμα δεν είναι σχήμα εικόνας | Ελέγξτε το Shape.HasImage πριν διαβάσετε το ImageData |
| Το κείμενο υδατογραφήματος δεν ταιριάζει με τη ζητούμενη γραμματοσειρά | Δεν παρασχέθηκε TextWatermarkOptions | Περάστε ένα αντικείμενο TextWatermarkOptions με το FontFamily ορισμένο σε Watermark.SetText(text, options) |
| Τα παιδικά σχήματα μιας ομάδας δεν κινούνται μαζί | Τα παιδιά μετατοπίστηκαν απευθείας αντί μέσω της ομάδας | Μετακινήστε ή αλλάξτε το μέγεθος του GroupShape ώστε η μετασχηματισμός συντεταγμένων του να εφαρμόζεται σε όλα τα παιδιά |
FAQ
Ποια είναι η διαφορά μεταξύ του Shape και του ShapeBase;
ShapeBase είναι η αφηρημένη βασική κλάση που μοιράζεται από Shape και GroupShape. Χρησιμοποιήστε το ShapeBase σε κώδικα που πρέπει να διαχειρίζεται ομοιόμορφα και τα δύο είδη· χρησιμοποιήστε το Shape όταν χρειάζεστε μέλη συγκεκριμένα για ένα μόνο αντικείμενο σχεδίασης, όπως ImageData ή Chart.
Πώς μπορώ να προσθέσω μια εικόνα σε ένα έγγραφο;
Χρησιμοποιήστε μία από τις υπερφορτώσεις του DocumentBuilder.InsertImage — περάστε ένα Image, μια διαδρομή αρχείου, ένα Stream ή έναν πίνακα byte, προαιρετικά με width/height ή πλήρη ορίσματα τοποθέτησης.
Πώς μπορώ να κάνω ένα σχήμα να αιωρείται αντί να βρίσκεται ενσωματωμένο στο κείμενο;
Ορίστε το WrapType του σε μη ενσωματωμένη τιμή και ορίστε το RelativeHorizontalPosition / RelativeVerticalPosition ώστε οι μετατοπίσεις Left/Top του σχήματος να ερμηνεύονται σε σχέση με τη σελίδα, το περιθώριο ή τη στήλη.
Μπορώ να προσθέσω και υδατογράφημα κειμένου και εικόνας;
Document.Watermark.Type αντικατοπτρίζει τον τρέχοντα τύπο υδατογραφήματος· ορίζοντας ένα νέο υδατογράφημα με SetText ή SetImage αντικαθιστά ό,τι υπήρχε προηγουμένως, έτσι ένα έγγραφο έχει το πολύ ένα ενεργό υδατογράφημα τη δεδομένη στιγμή.
Πώς μπορώ να αφαιρέσω τη σκιά ή την αντανάκλαση από ένα σχήμα;
Κλήστε Remove() στο αντίστοιχο αντικείμενο μορφοποίησης — Shape.ShadowFormat.Remove() ή Shape.Reflection.Remove().
API Reference Σύνοψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
Shape | Ένα μοναδικό αντικείμενο στρώσης σχεδίασης — AutoShape, εικόνα, πλαίσιο κειμένου ή αντικείμενο OLE. |
ShapeBase | Αφηρημένη βασική κλάση που μοιράζεται από Shape και GroupShape. |
GroupShape | Μια ομάδα σχημάτων που αντιμετωπίζεται ως ένα αντικείμενο σχεδίασης. |
DocumentBuilder.InsertImage | Εισάγει ένα σχήμα εικόνας στον δρομέα, με προαιρετικό μέγεθος και τοποθέτηση. |
ImageData | Τα δεδομένα εικόνας και οι ρυθμίσεις εικόνας (περικοπή, φωτεινότητα, αντίθεση) σε ένα Shape. |
Fill | Μορφοποίηση εσωτερικής γεμίσματος — συμπαγές, διαβάθμιση, μοτίβο ή εικόνα. |
RelativeHorizontalPosition / RelativeVerticalPosition | Σε τι μετράται η θέση ενός πλωτού σχήματος. |
WrapType / WrapSide | Πώς το περιβάλλον κείμενο περιτυλίγεται γύρω από ένα σχήμα. |
TextBox | Ρυθμίσεις διάταξης κειμένου για ένα σχήμα που περιέχει κείμενο. |
Document.Watermark | Διαχειρίζεται το υδατογράφημα κειμένου ή εικόνας του εγγράφου. |
TextWatermarkOptions / ImageWatermarkOptions | Διαμορφώστε την εμφάνιση υδατογραφήματος κειμένου ή εικόνας. |