ציור צורות וסימני מים
ציור צורות וסימני מים
מסמכי 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, או מערך בתים גולמי, עם גרסאות נוספות שמגדירות 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 מדווח האם הצורה זורמת עם הטקסט (inline) או צפה באופן עצמאי.
מילויים, קווי מתאר והשפעות
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()) במקום להגדיר כל מאפיין בנפרד ל-0. - בדוק את
Shape.HasImage,Shape.HasChartאוShape.IsGroupלפני גישה ל-ImageData,Chartאו לחברים ספציפיים לקבוצה, מכיוון ש-Shapeיכול לייצג אחד ממספר סוגי אובייקטי ציור.
בעיות נפוצות
| בעיה | סיבה | פתרון |
|---|---|---|
הגדרת Left/Top על צורה אינה משפיעה בצורה נראית | הצורה עדיין inline (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 או מערך בתים, באופן אופציונלי עם width/height או ארגומנטים מלאים למיקום.
איך לגרום לצורה לרחף במקום להיות מוטמעת בטקסט?
הגדר את ה-WrapType שלו לערך שאינו inline והגדר את 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 | הגדר את המראה של סימן המים בטקסט או בתמונה. |