Tworzenie i stosowanie efektów WordArt w Javie
Przegląd
Efekty WordArt pozwalają dodać wizualnie atrakcyjny, stylizowany tekst do prezentacji PowerPoint. Dzięki Aspose.Slides programiści mogą programowo tworzyć, dostosowywać i zarządzać WordArt tak samo jak w Microsoft PowerPoint — bez konieczności instalowania Office. Ten artykuł przedstawia przegląd pracy z WordArt, w tym stosowanie transformacji tekstu, stylów wypełnienia, konturów, cieni i innych opcji formatowania, aby zawartość prezentacji była bardziej wyrazista i angażująca. WordArt pozwala traktować tekst jako obiekt graficzny. Składa się z efektów lub specjalnych modyfikacji stosowanych do tekstu, aby uczynić go bardziej atrakcyjnym lub zauważalnym.
Tworzenie prostego szablonu WordArt i stosowanie go do tekstu
Używanie Aspose.Slides
Najpierw tworzymy prosty tekst przy użyciu tego kodu 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();
}
Teraz ustawiamy wysokość czcionki tekstu na większą wartość, aby efekt był bardziej widoczny, za pomocą tego kodu:
FontData fontData = new FontData("Arial Black");
portion.getPortionFormat().setLatinFont(fontData);
portion.getPortionFormat().setFontHeight(36);
Używanie Microsoft PowerPoint
Przejdź do menu efektów WordArt w Microsoft PowerPoint:

Z menu po prawej możesz wybrać gotowy efekt WordArt. Z menu po lewej możesz określić ustawienia nowego WordArt.
Oto niektóre dostępne parametry lub opcje:

Używanie Aspose.Slides
Tutaj stosujemy kolor wzoru SmallGrid do tekstu i dodajemy czarną obwódkę o szerokości 1 przy użyciu tego kodu:
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);
Wynikowy tekst:

Stosowanie innych efektów WordArt
Używanie Microsoft PowerPoint
Z interfejsu programu możesz zastosować te efekty do tekstu, bloku tekstowego, kształtu lub podobnego elementu:

Na przykład efekty Cień, Odbicie i Poświata mogą być zastosowane do tekstu; efekty Format 3D i Obrót 3D mogą być zastosowane do bloku tekstowego; właściwość Miękkie krawędzie może być zastosowana do obiektu Shape (działa ona również, gdy nie jest ustawiona właściwość Format 3D).
Stosowanie efektów cienia
Tutaj zamierzamy ustawić właściwości odnoszące się wyłącznie do tekstu. Stosujemy efekt cienia do tekstu przy użyciu tego kodu w Javie:
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 obsługuje trzy typy cieni: OuterShadow, InnerShadow i PresetShadow.
Przy użyciu PresetShadow możesz zastosować cień do tekstu (korzystając z wartości wstępnych).
Używanie Microsoft PowerPoint
W PowerPoint możesz używać jednego typu cienia. Oto przykład:

Używanie Aspose.Slides
Aspose.Slides pozwala na jednoczesne zastosowanie dwóch typów cieni: InnerShadow i PresetShadow.
Uwaga:
- Kiedy OuterShadow i PresetShadow są używane razem, stosowany jest tylko efekt OuterShadow.
- Jeśli OuterShadow i InnerShadow są używane jednocześnie, wynikowy lub zastosowany efekt zależy od wersji PowerPoint. Na przykład w PowerPoint 2013 efekt jest podwajany. Natomiast w PowerPoint 2007 stosowany jest efekt OuterShadow.
Stosowanie wyświetlania do tekstów
Dodajemy wyświetlanie do tekstu za pomocą tego przykładu kodu w Javie:
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);
Stosowanie efektu poświaty do tekstów
Stosujemy efekt poświaty do tekstu, aby go rozświetlić lub wyróżnić, przy użyciu tego kodu:
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);
Wynik operacji:

Używanie transformacji w WordArt
Używamy właściwości Transform (obowiązującej dla całego bloku tekstu) przy pomocy tego kodu:
textFrame.getTextFrameFormat().setTransform(TextShapeType.ArchUpPour);
Wynik:

Używanie PowerPoint
Aby uzyskać dostęp do wstępnie zdefiniowanych typów transformacji, przejdź do: Format -> TextEffect -> Transform
Używanie Aspose.Slides
Aby wybrać typ transformacji, użyj wyliczenia TextShapeType.
Stosowanie efektów 3D do tekstów i kształtów
Ustawiamy efekt 3D dla kształtu tekstowego przy pomocy tego przykładu kodu:
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);
Wynikowy tekst i jego kształt:

Stosujemy efekt 3D do tekstu przy użyciu tego kodu 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);
Wynik operacji:

Zastosowanie efektów 3D do tekstów lub ich kształtów oraz interakcje między efektami opierają się na określonych zasadach.
Rozważ scenę dla tekstu i kształtu zawierającego ten tekst. Efekt 3D zawiera reprezentację obiektu 3D oraz scenę, na której obiekt został umieszczony.
- Gdy scena jest ustawiona zarówno dla figury, jak i dla tekstu, scena figury ma wyższy priorytet — scena tekstu jest ignorowana.
- Gdy figura nie ma własnej sceny, ale posiada reprezentację 3D, używana jest scena tekstu.
- W przeciwnym razie — gdy kształt początkowo nie ma efektu 3D — kształt jest płaski i efekt 3D jest stosowany wyłącznie do tekstu.
Te opisy są powiązane z metodami ThreeDFormat.getLightRig() i ThreeDFormat.getCamera().
Stosowanie efektów zewnętrznego cienia do tekstów
Aspose.Slides dla Javy udostępnia klasy IOuterShadow i IInnerShadow, które pozwalają zastosować efekty cienia do tekstu zawartego w TextFrame. Przejdź przez następujące kroki:
- Utwórz instancję klasy Presentation.
- Pobierz referencję do slajdu, używając jego indeksu.
- Dodaj AutoShape typu Rectangle do slajdu.
- Uzyskaj dostęp do TextFrame powiązanego z AutoShape.
- Ustaw właściwość FillType AutoShape na NoFill.
- Zainstancjuj klasę OuterShadow.
- Ustaw BlurRadius cienia.
- Ustaw Direction cienia.
- Ustaw Distance cienia.
- Ustaw RectanglelAlign na TopLeft.
- Ustaw PresetColor cienia na Black.
- Zapisz prezentację jako plik PPTX.
Ten przykładowy kod w Javie — implementacja powyższych kroków — pokazuje, jak zastosować efekt zewnętrznego cienia do tekstu:
Presentation pres = new Presentation();
try {
// Pobierz referencję do slajdu
ISlide sld = pres.getSlides().get_Item(0);
// Dodaj AutoShape typu Rectangle
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);
// Dodaj TextFrame do prostokąta
ashp.addTextFrame("Aspose TextBox");
// Wyłącz wypełnienie kształtu, jeśli chcemy uzyskać cień tekstu
ashp.getFillFormat().setFillType(FillType.NoFill);
// Dodaj zewnętrzny cień i ustaw wszystkie niezbędne parametry
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);
//Zapisz prezentację na dysku
pres.save("pres_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Stosowanie efektu wewnętrznego cienia do kształtów
Przejdź przez następujące kroki:
- Utwórz instancję klasy Presentation.
- Pobierz referencję do slajdu.
- Dodaj AutoShape typu Rectangle.
- Włącz efekt InnerShadowEffect.
- Ustaw wszystkie niezbędne parametry.
- Ustaw ColorType jako Scheme.
- Ustaw Scheme Color.
- Zapisz prezentację jako plik PPTX.
Ten przykładowy kod (oparty na powyższych krokach) pokazuje, jak dodać łącze między dwoma kształtami w Javie:
Presentation pres = new Presentation();
try {
// Pobierz referencję do slajdu
ISlide slide = pres.getSlides().get_Item(0);
// Dodaj AutoShape typu Rectangle
IAutoShape ashp = slide.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 400, 300);
ashp.getFillFormat().setFillType(FillType.NoFill);
// Dodaj TextFrame do prostokąta
ashp.addTextFrame("Aspose TextBox");
IPortion port = ashp.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
IPortionFormat pf = port.getPortionFormat();
pf.setFontHeight(50);
// Włącz InnerShadowEffect
IEffectFormat ef = pf.getEffectFormat();
ef.enableInnerShadowEffect();
// Ustaw wszystkie niezbędne parametry
ef.getInnerShadowEffect().setBlurRadius(8.0);
ef.getInnerShadowEffect().setDirection(90.0F);
ef.getInnerShadowEffect().setDistance(6.0);
ef.getInnerShadowEffect().getShadowColor().setB((byte)189);
// Ustaw ColorType jako Scheme
ef.getInnerShadowEffect().getShadowColor().setColorType(ColorType.Scheme);
// Ustaw kolor schematu
ef.getInnerShadowEffect().getShadowColor().setSchemeColor(SchemeColor.Accent1);
// Zapisz prezentację
pres.save("WordArt_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Czy mogę używać efektów WordArt z różnymi czcionkami lub skryptami (np. arabskim, chińskim)?
Tak, Aspose.Slides obsługuje Unicode i działa ze wszystkimi głównymi czcionkami i skryptami. Efekty WordArt, takie jak cień, wypełnienie i kontur, mogą być stosowane niezależnie od języka, choć dostępność czcionek i renderowanie mogą zależeć od czcionek systemowych.
Czy mogę zastosować efekty WordArt do elementów master slajdu?
Tak, możesz stosować efekty WordArt do kształtów na slajdach wzorcowych, w tym do pól tytułowych, stopek lub tekstu tła. Zmiany w układzie master będą odzwierciedlone na wszystkich powiązanych slajdach.
Czy efekty WordArt wpływają na rozmiar pliku prezentacji?
Nieznacznie. Efekty WordArt, takie jak cienie, poświaty i wypełnienia gradientowe, mogą nieco zwiększyć rozmiar pliku ze względu na dodatkowe metadane formatowania, ale różnica zazwyczaj jest pomijalna.
Czy mogę podglądnąć wynik efektów WordArt bez zapisywania prezentacji?
Tak, możesz renderować slajdy zawierające WordArt do obrazów (np. PNG, JPEG) używając metody getImage z interfejsu IShape lub ISlide. Umożliwia to podgląd wyniku w pamięci lub na ekranie przed zapisaniem lub wyeksportowaniem pełnej prezentacji.