ایجاد و اعمال افکت‌های WordArt در Android

بررسی کلی

افکت‌های WordArt به شما امکان می‌دهند متن‌های جذاب و استایل‌دار را به ارائه‌های PowerPoint خود اضافه کنید. با Aspose.Slides، توسعه‌دهندگان می‌توانند به‌صورت برنامه‌نویسی WordArt را همانند Microsoft PowerPoint ایجاد، سفارشی‌سازی و مدیریت کنند—بدون نیاز به نصب Office. این مقاله نگاهی کلی به کار با WordArt می‌اندازد، از جمله نحوه اعمال تبدیل‌های متنی، سبک‌های پر، خطوط حاشیه، سایه‌ها و سایر گزینه‌های قالب‌بندی برای جذاب‌تر و بیانگرتر کردن محتوای ارائه شما. WordArt به شما اجازه می‌دهد متن را به عنوان یک شی گرافیکی در نظر بگیرید. این شامل افکت‌ها یا تغییرات ویژه‌ای است که بر متن اعمال می‌شود تا جذاب‌تر یا قابل‌توجه‌تر باشد.

ایجاد یک قالب ساده WordArt و اعمال آن بر متن

استفاده از Aspose.Slides

ابتدا، یک متن ساده با این کد Java می‌سازیم:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
    ITextFrame textFrame = autoShape.getTextFrame();

    Portion portion = (Portion)textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0);
    portion.setText("Aspose.Slides");
} finally {
    if (pres != null) pres.dispose();
}

حال، ارتفاع فونت متن را به مقدار بزرگ‌تری تنظیم می‌کنیم تا افکت واضح‌تر شود، با این کد:

FontData fontData = new FontData("Arial Black");
portion.getPortionFormat().setLatinFont(fontData);
portion.getPortionFormat().setFontHeight(36);

استفاده از Microsoft PowerPoint

به منوی افکت‌های WordArt در Microsoft PowerPoint بروید:

todo:image_alt_text

از منوی سمت راست می‌توانید یک افکت WordArt پیش‌تعریف شده را انتخاب کنید. از منوی سمت چپ می‌توانید تنظیمات یک WordArt جدید را مشخص کنید.

برخی از پارامترها یا گزینه‌های موجود عبارت‌اند از:

todo:image_alt_text

استفاده از Aspose.Slides

در اینجا، الگوی رنگی SmallGrid را به متن اعمال می‌کنیم و با این کد یک حاشیه متن سیاه با عرض 1 اضافه می‌کنیم:

portion.getPortionFormat().getFillFormat().setFillType(FillType.Pattern);
portion.getPortionFormat().getFillFormat().getPatternFormat().getForeColor().setColor(Color.ORANGE);
portion.getPortionFormat().getFillFormat().getPatternFormat().getBackColor().setColor(Color.WHITE);
portion.getPortionFormat().getFillFormat().getPatternFormat().setPatternStyle(PatternStyle.SmallGrid);

portion.getPortionFormat().getLineFormat().getFillFormat().setFillType(FillType.Solid);
portion.getPortionFormat().getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);

متن حاصل:

todo:image_alt_text

اعمال سایر افکت‌های WordArt

استفاده از Microsoft PowerPoint

از رابط برنامه می‌توانید این افکت‌ها را بر متن، بلوک متن، شکل یا المان مشابه اعمال کنید:

todo:image_alt_text

به عنوان مثال، افکت‌های سایه، انعکاس و درخشندگی می‌توانند بر متن اعمال شوند؛ افکت‌های قالب‌بندی سه‌بعدی و چرخش سه‌بعدی می‌توانند بر بلوک متن اعمال شوند؛ خصوصیت لبه‌های نرم می‌تواند بر یک شی Shape اعمال شود (هنوز زمانی که خصوصیت قالب‌بندی سه‌بعدی تنظیم نشده باشد، اثر دارد).

اعمال افکت‌های سایه

در اینجا قصد داریم ویژگی‌های مربوط به یک متن را تنظیم کنیم. افکت سایه را به متن با این کد Java اعمال می‌کنیم:

portion.getPortionFormat().getEffectFormat().enableOuterShadowEffect();
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().getShadowColor().setColor(Color.BLACK);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setScaleHorizontal(100);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setScaleVertical(65);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setBlurRadius(4.73);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setDirection(230);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setDistance(2);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setSkewHorizontal(30);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setSkewVertical(0);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().getShadowColor().getColorTransform().add(ColorTransformOperation.SetAlpha, 0.32f);

API Aspose.Slides سه نوع سایه پشتیبانی می‌کند: OuterShadow، InnerShadow و PresetShadow.

با PresetShadow می‌توانید یک سایه پیش‌تنظیم‌شده بر متن اعمال کنید.

استفاده از Microsoft PowerPoint

در PowerPoint می‌توانید از یک نوع سایه استفاده کنید. مثال:

todo:image_alt_text

استفاده از Aspose.Slides

Aspose.Slides در واقع اجازه می‌دهد دو نوع سایه را همزمان اعمال کنید: InnerShadow و PresetShadow.

نکات:

  • وقتی OuterShadow و PresetShadow هم‌زمان استفاده شوند، تنها افکت OuterShadow اعمال می‌شود.
  • اگر OuterShadow و InnerShadow همزمان به کار برده شوند، اثر نهایی بستگی به نسخه PowerPoint دارد. برای مثال، در PowerPoint 2013 اثر دو برابر می‌شود؛ اما در PowerPoint 2007، افکت OuterShadow اعمال می‌شود.

اعمال افکت‌های انعکاس بر متن

با این نمونه کد Java نمایش به متن اضافه می‌کنیم:

portion.getPortionFormat().getEffectFormat().enableReflectionEffect();
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setBlurRadius(0.5);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setDistance(4.72);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setStartPosAlpha(0f);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setEndPosAlpha(60f);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setDirection(90);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setScaleHorizontal(100);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setScaleVertical(-100);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setStartReflectionOpacity(60f);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setEndReflectionOpacity(0.9f);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setRectangleAlign(RectangleAlignment.BottomLeft);   

اعمال افکت‌های درخشندگی بر متن

با این کد افکت درخشندگی را به متن اعمال می‌کنیم تا براق یا برجسته شود:

portion.getPortionFormat().getEffectFormat().enableGlowEffect();
portion.getPortionFormat().getEffectFormat().getGlowEffect().getColor().setR((byte)255);
portion.getPortionFormat().getEffectFormat().getGlowEffect().getColor().getColorTransform().add(ColorTransformOperation.SetAlpha, 0.54f);
portion.getPortionFormat().getEffectFormat().getGlowEffect().setRadius(7);

نتیجه عملیات:

todo:image_alt_text

استفاده از تبدیل‌ها در WordArt

با این کد، ویژگی Transform (که بر کل بلوک متن اعمال می‌شود) را استفاده می‌کنیم:

textFrame.getTextFrameFormat().setTransform(TextShapeType.ArchUpPour);

نتیجه:

todo:image_alt_text

استفاده از PowerPoint

برای دسترسی به انواع تبدیل‌های پیش‌تعریف‌شده، مسیر زیر را دنبال کنید: Format -> TextEffect -> Transform

استفاده از Aspose.Slides

برای انتخاب یک نوع تبدیل، از enum ‎TextShapeType‎ استفاده کنید.

اعمال افکت‌های سه‌بعدی بر متن و اشکال

با این نمونه کد یک افکت سه‌بعدی به شکل متن اعمال می‌کنیم:

autoShape.getThreeDFormat().getBevelBottom().setBevelType(BevelPresetType.Circle);
autoShape.getThreeDFormat().getBevelBottom().setHeight(10.5);
autoShape.getThreeDFormat().getBevelBottom().setWidth(10.5);

autoShape.getThreeDFormat().getBevelTop().setBevelType(BevelPresetType.Circle);
autoShape.getThreeDFormat().getBevelTop().setHeight(12.5);
autoShape.getThreeDFormat().getBevelTop().setWidth(11);

autoShape.getThreeDFormat().getExtrusionColor().setColor(Color.ORANGE);
autoShape.getThreeDFormat().setExtrusionHeight(6);

autoShape.getThreeDFormat().getContourColor().setColor(Color.RED);
autoShape.getThreeDFormat().setContourWidth(1.5);

autoShape.getThreeDFormat().setDepth(3);

autoShape.getThreeDFormat().setMaterial(MaterialPresetType.Plastic);

autoShape.getThreeDFormat().getLightRig().setDirection(LightingDirection.Top);
autoShape.getThreeDFormat().getLightRig().setLightType(LightRigPresetType.Balanced);
autoShape.getThreeDFormat().getLightRig().setRotation(0, 0, 40);

autoShape.getThreeDFormat().getCamera().setCameraType(CameraPresetType.PerspectiveContrastingRightFacing);

متن و شکل حاصل:

todo:image_alt_text

با این کد Java یک افکت سه‌بعدی بر متن اعمال می‌کنیم:

textFrame.getTextFrameFormat().getThreeDFormat().getBevelBottom().setBevelType(BevelPresetType.Circle);
textFrame.getTextFrameFormat().getThreeDFormat().getBevelBottom().setHeight(3.5);
textFrame.getTextFrameFormat().getThreeDFormat().getBevelBottom().setWidth(3.5);

textFrame.getTextFrameFormat().getThreeDFormat().getBevelTop().setBevelType(BevelPresetType.Circle);
textFrame.getTextFrameFormat().getThreeDFormat().getBevelTop().setHeight(4);
textFrame.getTextFrameFormat().getThreeDFormat().getBevelTop().setWidth(4);

textFrame.getTextFrameFormat().getThreeDFormat().getExtrusionColor().setColor(Color.ORANGE);
textFrame.getTextFrameFormat().getThreeDFormat().setExtrusionHeight(6);

textFrame.getTextFrameFormat().getThreeDFormat().getContourColor().setColor(Color.RED);
textFrame.getTextFrameFormat().getThreeDFormat().setContourWidth(1.5);

textFrame.getTextFrameFormat().getThreeDFormat().setDepth(3);

textFrame.getTextFrameFormat().getThreeDFormat().setMaterial(MaterialPresetType.Plastic);

textFrame.getTextFrameFormat().getThreeDFormat().getLightRig().setDirection(LightingDirection.Top);
textFrame.getTextFrameFormat().getThreeDFormat().getLightRig().setLightType(LightRigPresetType.Balanced);
textFrame.getTextFrameFormat().getThreeDFormat().getLightRig().setRotation(0, 0, 40);

textFrame.getTextFrameFormat().getThreeDFormat().getCamera().setCameraType(CameraPresetType.PerspectiveContrastingRightFacing);

نتیجه عملیات:

todo:image_alt_text

اعمال افکت سایه خارجی بر متن

Aspose.Slides برای Android از طریق Java کلاس‌های IOuterShadow و IInnerShadow را ارائه می‌دهد که امکان اعمال افکت‌های سایه به متنی که درون ‎TextFrame‎ قرار دارد، می‌دهند. این مراحل را دنبال کنید:

  1. یک نمونه از کلاس ‎Presentation‎ ایجاد کنید.
  2. مرجع یک اسلاید را با استفاده از ایندکس آن دریافت کنید.
  3. یک AutoShape از نوع Rectangle را به اسلاید اضافه کنید.
  4. به TextFrame مرتبط با AutoShape دسترسی پیدا کنید.
  5. FillType AutoShape را روی NoFill تنظیم کنید.
  6. کلاس OuterShadow را نمونه‌سازی کنید.
  7. BlurRadius سایه را تنظیم کنید.
  8. Direction سایه را تنظیم کنید.
  9. Distance سایه را تنظیم کنید.
  10. RectanglelAlign را روی TopLeft تنظیم کنید.
  11. PresetColor سایه را روی Black تنظیم کنید.
  12. ارائه را به عنوان فایل ‎PPTX‎ ذخیره کنید.

این کد نمونه در Java—پیاده‌سازی مراحل فوق—نحوه اعمال افکت سایه خارجی به متن را نشان می‌دهد:

Presentation pres = new Presentation();
try {
    // دریافت مرجع اسلاید
    ISlide sld = pres.getSlides().get_Item(0);

    // اضافه کردن یک AutoShape از نوع Rectangle
    IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);

    // اضافه کردن TextFrame به Rectangle
    ashp.addTextFrame("Aspose TextBox");

    // غیرفعال‌کردن پر کردن شکل در صورتی که بخواهیم سایه متن را دریافت کنیم
    ashp.getFillFormat().setFillType(FillType.NoFill);

    // اضافه کردن سایه خارجی و تنظیم تمام پارامترهای لازم
    ashp.getEffectFormat().enableOuterShadowEffect();
    IOuterShadow shadow = ashp.getEffectFormat().getOuterShadowEffect();
    shadow.setBlurRadius(4.0);
    shadow.setDirection(45);
    shadow.setDistance(3);
    shadow.setRectangleAlign(RectangleAlignment.TopLeft);
    shadow.getShadowColor().setPresetColor(PresetColor.Black);

    //نوشتن ارائه در دیسک
    pres.save("pres_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

اعمال افکت سایه داخلی بر اشکال

مراحل زیر را دنبال کنید:

  1. یک نمونه از کلاس ‎Presentation‎ ایجاد کنید.
  2. مرجع اسلاید را دریافت کنید.
  3. یک AutoShape از نوع Rectangle اضافه کنید.
  4. InnerShadowEffect را فعال کنید.
  5. تمام پارامترهای لازم را تنظیم کنید.
  6. ColorType را به Scheme تنظیم کنید.
  7. رنگ Scheme را تنظیم کنید.
  8. ارائه را به عنوان فایل ‎PPTX‎ ذخیره کنید.

این کد نمونه (بر پایه مراحل فوق) نشان می‌دهد چگونه یک کانکتور بین دو shape در Java اضافه کنید:

Presentation pres = new Presentation();
try {
    // دریافت مرجع اسلاید
    ISlide slide = pres.getSlides().get_Item(0);

    // اضافه کردن یک AutoShape از نوع Rectangle
    IAutoShape ashp = slide.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 400, 300);
    ashp.getFillFormat().setFillType(FillType.NoFill);

    // اضافه کردن TextFrame به Rectangle
    ashp.addTextFrame("Aspose TextBox");
    IPortion port = ashp.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
    IPortionFormat pf = port.getPortionFormat();
    pf.setFontHeight(50);

    // فعال‌سازی InnerShadowEffect
    IEffectFormat ef = pf.getEffectFormat();
    ef.enableInnerShadowEffect();

    // تنظیم تمام پارامترهای لازم
    ef.getInnerShadowEffect().setBlurRadius(8.0);
    ef.getInnerShadowEffect().setDirection(90.0F);
    ef.getInnerShadowEffect().setDistance(6.0);
    ef.getInnerShadowEffect().getShadowColor().setB((byte)189);

    // تنظیم ColorType به عنوان Scheme
    ef.getInnerShadowEffect().getShadowColor().setColorType(ColorType.Scheme);

    // تنظیم Scheme Color
    ef.getInnerShadowEffect().getShadowColor().setSchemeColor(SchemeColor.Accent1);

    // ذخیره‌سازی ارائه
    pres.save("WordArt_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

سؤالات متداول

آیا می‌توانم افکت‌های WordArt را با فونت‌ها یا اسکریپت‌های متفاوت (مانند عربی، چینی) استفاده کنم؟

بله، Aspose.Slides از یونیکد پشتیبانی می‌کند و با تمام فونت‌ها و اسکریپت‌های اصلی کار می‌کند. افکت‌های WordArt مانند سایه، پر و خط مرزی می‌توانند صرف‌نظر از زبان اعمال شوند، هرچند در دسترس بودن فونت و رندر ممکن است به فونت‌های سیستم وابسته باشد.

آیا می‌توانم افکت‌های WordArt را بر عناصر مستر اسلاید اعمال کنم؟

بله، می‌توانید افکت‌های WordArt را به اشکال موجود در مستر اسلایدها، شامل نگهدارنده‌های عنوان، فوتر یا متن پس‌زمینه اعمال کنید. تغییرات اعمال‌شده بر طرح مستر در تمام اسلایدهای مرتبط بازتاب می‌یابد.

آیا افکت‌های WordArt بر اندازه فایل ارائه تأثیر می‌گذارند؟

به‌صورت جزئی. افکت‌های WordArt مانند سایه‌ها، درخشندگی‌ها و پرهای گرادیان ممکن است کمی اندازه فایل را به‌دلیل افزودن متادیتای قالب‌بندی افزایش دهند، ولی معمولاً این تفاوت ناچیز است.

آیا می‌توانم نتیجه افکت‌های WordArt را بدون ذخیرهٔ ارائه پیش‌نمایش کنم؟

بله، می‌توانید اسلایدهای حاوی WordArt را به تصویر (مثلاً PNG یا JPEG) رندر کنید با استفاده از متد ‎getImage‎ از اینترفیس‌های ‎IShape‎ یا ‎ISlide‎. این امکان پیش‌نمایش نتیجه را در حافظه یا روی صفحه قبل از ذخیره یا استخراج کل ارائه فراهم می‌کند.