איך להוסיף צורות שרטוט למסמכי Word ב-.NET

איך להוסיף צורות שרטוט למסמכי Word ב-.NET

מדריך זה מראה כיצד להוסיף תוכן לשכבת הציור של מסמך Word עם Aspose.Words FOSS ל-.NET: הוספת AutoShape, הוספת תמונה, מיקום שלה והקפת טקסט סביבה, מילוי ועיצוב, קיבוץ של כמה צורות, והגדרת סימן מים. Aspose.Words FOSS ל-.NET זמין דרך NuGet או על ידי בנייה מהמקור.

מדריך שלב-אחר-שלב

שלב 1: קבל את הספרייה

שכפל את המאגרים ובנה Aspose.Words.sln בהגדרת Release, ולאחר מכן הוסף הפנייה לפרויקט ל Aspose.Words.csproj מפרויקט .NET שלך, כפי שמתואר ב- מדריך ההתקנה. הוסף using Aspose.Words; and using Aspose.Words.Drawing; בראש כל קובץ שעובד עם צורות.


שלב 2: הוסף AutoShape

בנה צורה ישירות עם new Shape(doc, shapeType), כאשר shapeType הוא ערך ShapeType כגון Rectangle, Ellipse, Star או TextBox, ולאחר מכן הוסף אותה לעץ באמצעות DocumentBuilder.InsertNode(node). Shape היא המחלקה הקונקרטית והסגורה שאתה בונה ומגדיר; היא יורשת מהמחלקה המופשטת ShapeBase, שמגדירה מיקום (Left, Top, Width, Height, Rotation) ותת-אובייקטים של עיצוב (Fill, Stroke, ShadowFormat, Glow, Reflection) משותפים עם GroupShape.


שלב 3: הוסף תמונה

DocumentBuilder.InsertImage הוא הנתיב הישיר לתמונות: עומסי יתר מקבלים Image, נתיב קובץ, Stream, או מערך בתים גולמי, עם עומסי יתר נוספים שמקבלים width/height מפורשים או ארגומנטים של מיקום מלא (horzPos, left, vertPos, top, width, height, wrapType). ה-ImageData של Shape מחזיק את נתוני התמונה — קרא ל-ImageData.SetImage(...) כדי להחליף את התמונה, והשתמש ב-CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast, ו-GrayScale להתאמות בסיסיות.


שלב 4: מיקום הצורה והקפת טקסט

צורה משולבת (התוצאה ברירת המחדל של InsertImage) זורמת עם הטקסט הסובב ומתעלמת מתכונות המיקום עד שהיא צפה — בדוק את IsInline כדי לאשר באיזה מצב נמצאת הצורה. כדי לצוף צורה, הגדר את WrapType לערך שאינו משולב והגדר את RelativeHorizontalPosition / RelativeVerticalPosition (כל אחד יחסית ל-Page, Margin, Column, או עוגן דומה) יחד עם ההזזות Left/Top. WrapSide שולט בהקפת טקסט ספציפית לצד, ו-HorizontalAlignment / VerticalAlignment מטפלים ביישור יחסי פשוט במקום הזזות מפורשות.


שלב 5: מילוי ועיצוב הצורה

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() שמוחק את האפקט חזרה ללא דבר.


שלב 6: קיבוץ מספר צורות

קבץ מספר צורות ליחידה אחת באמצעות DocumentBuilder.InsertGroupShape(shapes), שמחזירה GroupShape. GroupShape הוא בעצמו ShapeBase, ולכן הוא נושא את ה-Fill, ShadowFormat, Glow, ו-Reflection שלו החלים על הקבוצה כולה; הזז או שנה את גודלה של GroupShape במקום הילדים היחידים שלה כדי שהטרנספורמציה של הקואורדינטות של הקבוצה תישאר עקבית. עבור צורה שנושאת טקסט, Shape.TextBox (אובייקט TextBox) שולט במרווחים (InternalMarginLeft/Right/Top/Bottom), שינוי גודל אוטומטי (FitShapeToText), כיוון הטקסט (LayoutFlow), ויישור אנכי (VerticalAnchor).


שלב 7: הוסף סימן מים

Document.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.

בעיות נפוצות ופתרונות

Setting Left/Top על צורה אין השפעה נראית. הצורה עדיין משולבת בתוך השורה (IsInline == true). הגדר WrapType לְערך מרחף והגדר RelativeHorizontalPosition/RelativeVerticalPosition כך שמאפייני ההזזה ייכנסו לתוקף.

Shape.ImageData זורק או מחזיר כלום. הצורה איננה צורת תמונה. בדוק Shape.HasImage לפני הקריאה ImageData.

צורות הילד של קבוצה אינן נעות יחד. הילדים הוזזו מחדש באופן פרטני במקום דרך הקבוצה. הזז או שנה את גודלם the GroupShape עצמו כך שהטרנספורמציה הקואורדינטית שלו חלה על כל ילד.

טקסט סימן המים אינו משתמש בגופן המבוקש. לא TextWatermarkOptions הועבר. קרא Watermark.SetText(text, options) עם TextWatermarkOptions מופע שבו FontFamily הוגדר.

שאלות נפוצות

מה ההבדל בין Shape ל-ShapeBase?

ShapeBase היא המחלקה הבסיסית המופשטת שמשותפת ל-Shape ול-GroupShape. כתבו קוד נגד ShapeBase כאשר הוא צריך לטפל בשני הסוגים באופן אחיד; השתמשו ב-Shape ישירות לחברים ספציפיים לאובייקט ציור יחיד, כגון ImageData.

איך אני מוסיף תמונה בגודל ספציפי?

השתמש בטעינה יתרה של DocumentBuilder.InsertImage שמקבלת ארגומנטים מפורשים של width ו-height, יחד עם מקור התמונה (‏Image‏, נתיב קובץ, Stream, או מערך בתים).

איך אני גורם לצורה לצוף במקום להיות משולבת בתוך הטקסט?

הגדר את ה-WrapType שלו לערך שאינו משולב בשורה והגדר את RelativeHorizontalPosition / RelativeVerticalPosition כך שההיסטים של Left/Top יפורשו יחסית לדף, לשוליים או לעמודה.

האם מסמך יכול להכיל סימן מים טקסטואלי ותמונת סימן מים בו-זמנית?

מספר Document.Watermark.Type מדווח על סוג סימן המים הנוכחי; קריאה ל-SetText או SetImage שוב מחליפה כל סימן מים שנקבע קודם.

כיצד להסיר צל או השתקפות מצורה?

קרא ל-Remove() על אובייקט העיצוב המתאים — Shape.ShadowFormat.Remove() או Shape.Reflection.Remove().

ראה גם

 עברית