رسم اشکال و واترمارک‌ها

رسم اشکال و واترمارک‌ها

رسم اشکال و واترمارک‌ها

اسناد Word AutoShapes، تصاویر، جعبه‌های متن و اشیای OLE را در لایهٔ رسم جداگانه‌ای نگه می‌دارند که از جریان متن پاراگراف/رون متمایز است. Aspose.Words FOSS برای .NET این لایه را با کلاس Shape (اشیای رسم واقعی) و پایهٔ انتزاعی ShapeBase که هر دو جز فضای نام Aspose.Words.Drawing هستند، مدل‌سازی می‌کند. این راهنما مدل شکل، درج تصاویر و AutoShapes، موقعیت‌یابی و پیچاندن، پرکننده‌ها و افکت‌ها، گروه‌بندی و واترمارک‌ها را پوشش می‌دهد.


مدل Shape و ShapeBase

Shape — sealed، و نوعی که مستقیم با آن کار می‌کنید — نشان‌دهندهٔ یک 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 مسیر مستقیمتری است: overloadها یک Image، مسیر فایل، یک Stream یا آرایهٔ بایت خام را می‌پذیرند، با overloadهای بیشتر که 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 کار کند؛ وقتی به اعضای مخصوص تصویر یا AutoShape مانند ImageData یا Chart نیاز دارید، مستقیماً از Shape استفاده کنید.
  • هنگام شناور کردن یک شکل، RelativeHorizontalPosition / RelativeVerticalPosition را همراه با WrapType تنظیم کنید — یک شکل درون‌متنی (پیش‌فرض برای InsertImage) تا زمانی که آن را شناور کنید، ویژگی‌های موقعیت‌یابی را نادیده می‌گیرد.
  • به‌جای درج و موقعیت‌یابی دستی یک Shape پشت متن، برای افزودن یک نشان‌گذاری سراسری در سراسر سند، از Document.Watermark استفاده کنید.
  • به‌جای تنظیم ویژگی‌های جداگانه به صفر، اثر را با متد Remove() شیء آن (‏ShadowFormat.Remove()، ReflectionFormat.Remove()) پاک کنید.
  • قبل از دسترسی به ImageData، Chart یا اعضای خاص گروه، Shape.HasImage، Shape.HasChart یا Shape.IsGroup را بررسی کنید، چون یک Shape می‌تواند هر یک از انواع مختلف اشیای رسم را نشان دهد.

مشکلات رایج

مشکلدلیلرفع
تنظیم Left/Top بر روی یک شکل هیچ اثر قابل مشاهده‌ای نداردشکل هنوز درون‌خطی است (IsInline == true)WrapType را به مقدار شناور تنظیم کنید و RelativeHorizontalPosition/RelativeVerticalPosition را تنظیم کنید تا ویژگی‌های موقعیت‌یابی اعمال شوند
Shape.ImageData خطا می‌اندازد یا خالی استشکل یک شکل تصویری نیستقبل از خواندن ImageData، Shape.HasImage را بررسی کنید
متن واترمارک با قلم درخواستی مطابقت نداردهیچ TextWatermarkOptionsی فراهم نشدیک نمونه TextWatermarkOptions را با FontFamily تنظیم‌شده به Watermark.SetText(text, options) پاس کنید
شکل‌های فرزند یک گروه به‌صورت همزمان حرکت نمی‌کنندفرزندان به‌صورت مستقیم جابه‌جا شدند نه از طریق گروهGroupShape را جابه‌جا یا تغییر اندازه دهید تا تبدیل مختصات آن بر تمام فرزندان اعمال شود

FAQ

تفاوت Shape و ShapeBase چیست؟

ShapeBase کلاس پایهٔ انتزاعی است که توسط Shape و GroupShape به اشتراک گذاشته می‌شود. در کدی که باید هر دو نوع را به‌طور یکنواخت مدیریت کند، از ShapeBase استفاده کنید؛ وقتی به اعضای خاص یک شیء رسم واحد نیاز دارید، مانند ImageData یا Chart، از Shape استفاده کنید.

چگونه یک تصویر را به سند اضافه کنم؟

از یکی از overloadهای 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پیکربندی ظاهر واترمارک متنی یا تصویری.

همچنین ببینید:

 فارسی