Java Kullanarak Sunumlarda Şekil Animasyonlarını Uygulama
Giriş
Animasyonlar, metinlere, görüntülere, şekillere veya grafiklere uygulanabilen görsel efektlerdir. Sunumlara veya bileşenlerine canlılık katar.
Sunumlarda Neden Animasyon Kullanılır?
- bilginin akışını kontrol edin
- önemli noktaları vurgulayın
- izleyicilerinizin ilgisini veya katılımını artırın
- içeriğin okunmasını, sindirilmesini veya işlenmesini kolaylaştırın
- okuyucularınızın veya izleyicilerinizin dikkatini sunumdaki önemli bölümlere çekin
PowerPoint, giriş, çıkış, vurgulama ve hareket yolları kategorilerinde animasyonlar ve animasyon efektleri için birçok seçenek ve araç sunar.
Aspose.Slides’ta Animasyonlar
- Aspose.Slides, animasyonlarla çalışmanız için gerekli sınıfları ve tipleri
Aspose.Slides.Animationad alanı altında sağlar, - Aspose.Slides, EffectType enum’ı altında 150’den fazla animasyon efekti sunar. Bu efektler esasen PowerPoint’te kullanılan aynı (veya eşdeğer) efektlerdir.
Metin Kutusuna Animasyon Uygulama
Aspose.Slides for Java, bir şeklin içindeki metne animasyon uygulamanıza olanak tanır.
- Presentation sınıfının bir örneğini oluşturun.
- İndeks aracılığıyla bir slayt referansı edinin.
- Bir
rectangleIAutoShape ekleyin. - IAutoShape.TextFrame içine metin ekleyin.
- Efektlerin ana dizisini alın.
- IAutoShape üzerine bir animasyon efekti ekleyin.
TextAnimation.BuildTypeözelliğiniBuildTypeenum’ından gelen değerle ayarlayın.- Sunumu bir PPTX dosyası olarak diske yazın.
Bu Java kodu, AutoShape’e Fade efektini nasıl uygulayacağınızı ve metin animasyonunu 1. Düzey Paragraflar değerine nasıl ayarlayacağınızı gösterir:
// Sunum dosyasını temsil eden bir sunum sınıfını örnekler.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Metin ile yeni AutoShape ekler
IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.getTextFrame();
textFrame.setText("First paragraph \nSecond paragraph \n Third paragraph");
// Slaytın ana dizisini alır.
ISequence sequence = sld.getTimeline().getMainSequence();
// Şekle Fade animasyon etkisi ekler
IEffect effect = sequence.addEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Şekil metnini 1. seviye paragraflar ile animasyonlandırır
effect.getTextAnimation().setBuildType(BuildType.ByLevelParagraphs1);
// PPTX dosyasını diske kaydeder
pres.save(path + "AnimText_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
PictureFrame’e Animasyon Uygulama
- Presentation sınıfının bir örneğini oluşturun.
- İndeks aracılığıyla bir slayt referansı alın.
- Slayta bir PictureFrame ekleyin veya alın.
- Efektlerin ana dizisini alın.
- PictureFrame üzerine bir animasyon efekti ekleyin.
- Sunumu bir PPTX dosyası olarak diske yazın.
Bu Java kodu, bir picture frame’e Fly efektini nasıl uygulayacağınızı gösterir:
// Sunum dosyasını temsil eden bir sunum sınıfını örnekler.
Presentation pres = new Presentation();
try {
// Sunum görüntü koleksiyonuna eklenecek resmi yükler
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Slayta resim çerçevesi ekler
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);
// Slaytın ana dizisini alır.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Resim çerçevesine Soldan Uçuş animasyon etkisi ekler
IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// PPTX dosyasını diske kaydeder
pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Şekle Animasyon Uygulama
- Presentation sınıfının bir örneğini oluşturun.
- İndeks aracılığıyla bir slayt referansı alın.
- Bir
rectangleIAutoShape ekleyin. - Bir
BevelIAutoShape ekleyin (bu nesne tıklandığında animasyon oynatılır). - Bevel şekli üzerinde bir efekt dizisi oluşturun.
- Özel bir
UserPatholuşturun. UserPath‘e hareket komutları ekleyin.- Sunumu bir PPTX dosyası olarak diske yazın.
Bu Java kodu, bir şekle PathFootball (path football) efektini nasıl uygulayacağınızı gösterir:
// PPTX dosyasını temsil eden bir Presentation sınıfını örnekler.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Mevcut şekil için sıfırdan PathFootball etkisi oluşturur.
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.addTextFrame("Animated TextBox");
// PathFootBall animasyon etkisini ekler
pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Bir çeşit "düğme" oluşturur.
IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Bu düğme için bir efekt dizisi oluşturur.
ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
// Özel bir kullanıcı yolu oluşturur. Nesnemiz sadece düğmeye tıklandıktan sonra hareket edecektir.
IEffect fxUserPath = seqInter.addEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Oluşturulan yol boş olduğu için hareket komutları ekler.
IMotionEffect motionBvh = ((IMotionEffect)fxUserPath.getBehaviors().get_Item(0));
Point2D.Float[] pts = new Point2D.Float[1];
pts[0] = new Point2D.Float(0.076f, 0.59f);
motionBvh.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, true);
pts[0] = new Point2D.Float(-0.076f, -0.59f);
motionBvh.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, false);
motionBvh.getPath().add(MotionCommandPathType.End, null, MotionPathPointsType.Auto, false);
// PPTX dosyasını diske yazar
pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Bir Şekle Uygulanan Animasyon Efektlerini Alma
Aşağıdaki örnekler, bir şekle uygulanan tüm animasyon efektlerini almak için ISequence arayüzündeki getEffectsByShape metodunun nasıl kullanılacağını gösterir.
Örnek 1: Normal bir slaytta bir şekle uygulanan animasyon efektlerini alma
Daha önce PowerPoint sunumlarındaki şekillere animasyon efektleri eklemeyi öğrenmiştiniz. Aşağıdaki örnek kod, AnimExample_out.pptx sunumundaki ilk normal slayttaki ilk şekle uygulanan efektleri nasıl alacağınızı gösterir:
Presentation presentation = new Presentation("AnimExample_out.pptx");
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
// Slaytın ana animasyon dizisini alır.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// İlk slayttaki ilk şekli alır.
IShape shape = firstSlide.getShapes().get_Item(0);
// Şekle uygulanan animasyon efektlerini alır.
IEffect[] shapeEffects = sequence.getEffectsByShape(shape);
if (shapeEffects.length > 0)
System.out.println("The shape " + shape.getName() + " has " + shapeEffects.length + " animation effects.");
} finally {
if (presentation != null) presentation.dispose();
}
Örnek 2: Yer tutuculardan devralınanlar da dahil olmak üzere tüm animasyon efektlerini alma
Eğer normal bir slayttaki bir şeklin, yerleşim slaytı ve/veya ana slayt üzerindeki yer tutucuları varsa ve bu yer tutuculara animasyon efektleri eklenmişse, şeklin tüm efektleri slayt gösterisi sırasında oynatılır; bu etkiler yer tutuculardan devralınanları da içerir.
Varsayalım ki sample.pptx adlı bir PowerPoint sunum dosyamız var ve tek bir slaytı sadece Made with Aspose.Slides metni içeren bir altbilgi şekli içeriyor ve bu şekle Random Bars efekti uygulanmış.

Ayrıca altbilgi yer tutucusuna layout slaytında Split efekti uygulandığını varsayalım.

Ve son olarak, master slaytındaki altbilgi yer tutucusuna Fly In efekti uygulanmış.

Aşağıdaki örnek kod, IShape arayüzündeki getBasePlaceholder metodunu kullanarak şekil yer tutucularına erişmeyi ve altbilgi şekline uygulanan animasyon efektlerini, yerleşim ve ana slaytlardaki yer tutuculardan devralınanları da dahil ederek almayı gösterir:
Presentation presentation = new Presentation("sample.pptx");
ISlide slide = presentation.getSlides().get_Item(0);
// Normal slayttaki şeklin animasyon efektlerini al.
IShape shape = slide.getShapes().get_Item(0);
IEffect[] shapeEffects = slide.getTimeline().getMainSequence().getEffectsByShape(shape);
// Yerleşim slaydındaki yer tutucunun animasyon efektlerini al.
IShape layoutShape = shape.getBasePlaceholder();
IEffect[] layoutShapeEffects = slide.getLayoutSlide().getTimeline().getMainSequence().getEffectsByShape(layoutShape);
// Ana slaydındaki yer tutucunun animasyon efektlerini al.
IShape masterShape = layoutShape.getBasePlaceholder();
IEffect[] masterShapeEffects = slide.getLayoutSlide().getMasterSlide().getTimeline().getMainSequence().getEffectsByShape(masterShape);
System.out.println("Main sequence of shape effects:");
printEffects(masterShapeEffects);
printEffects(layoutShapeEffects);
printEffects(shapeEffects);
presentation.dispose();
static void printEffects(IEffect[] effects)
{
for (IEffect effect : effects)
{
String typeName = EffectType.getName(EffectType.class, effect.getType());
String subtypeName = EffectSubtype.getName(EffectSubtype.class, effect.getSubtype());
System.out.println(typeName + " " + subtypeName);
}
}
Çıktı:
Main sequence of shape effects:
Fly Bottom
Split VerticalIn
RandomBars Horizontal
Animasyon Efekti Zamanlama Özelliklerini Değiştirme
Aspose.Slides for Java, bir animasyon efektinin Zamanlama (Timing) özelliklerini değiştirmenize olanak tanır.
Bu, Microsoft PowerPoint’teki Animasyon Zamanlama bölmesidir:

PowerPoint Zamanlama ve Effect.Timing özellikleri arasındaki karşılıklar:
- PowerPoint Zamanlama Start (Başlat) açılır listesi, Effect.Timing.TriggerType özelliğiyle eşleşir.
- PowerPoint Zamanlama Duration (Süre), Effect.Timing.Duration özelliğiyle eşleşir. Bir animasyonun (saniye cinsinden) süresi, animasyonun bir döngüyü tamamlaması için geçen toplam süredir.
- PowerPoint Zamanlama Delay (Gecikme), Effect.Timing.TriggerDelayTime özelliğiyle eşleşir.
Effect Timing özelliklerini şu şekilde değiştirirsiniz:
- Şekle animasyon uygula ya da animasyon efektini alın.
- İhtiyacınız olan Effect.Timing özelliklerine yeni değerler atayın.
- Değiştirilmiş PPTX dosyasını kaydedin.
Bu Java kodu işlemi gösterir:
// Sunum dosyasını temsil eden bir presentation sınıfını örnekler.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Slaytın ana dizisini alır.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Ana dizinin ilk efektini alır.
IEffect effect = sequence.get_Item(0);
// Efektin TriggerType'ını tıklamayla başlatacak şekilde değiştirir
effect.getTiming().setTriggerType(EffectTriggerType.OnClick);
// Efektin süresini değiştirir
effect.getTiming().setDuration(3f);
// Efektin TriggerDelayTime'ını değiştirir
effect.getTiming().setTriggerDelayTime(0.5f);
// PPTX dosyasını diske kaydeder
pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animasyon Efekti Sesleri
Aspose.Slides, animasyon efektlerindeki seslerle çalışmanıza olanak tanıyan aşağıdaki özellikleri sağlar:
Animasyon Efekti Sesi Ekleme
Bu Java kodu, bir animasyon efekti sesini nasıl ekleyeceğinizi ve bir sonraki efekt başladığında sesin durdurulacağını gösterir:
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Sunum ses koleksiyonuna ses ekler
IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));
ISlide firstSlide = pres.getSlides().get_Item(0);
// Slaytın ana dizisini alır.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Ana dizinin ilk efektini alır
IEffect firstEffect = sequence.get_Item(0);
// Efekti "Ses Yok" için kontrol eder
if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
{
// İlk efekt için ses ekler
firstEffect.setSound(effectSound);
}
// Slaytın ilk etkileşimli dizisini alır.
ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
// Efektin "Önceki sesi durdur" bayrağını ayarlar
interactiveSequence.get_Item(0).setStopPreviousSound(true);
// PPTX dosyasını diske yazar
pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animasyon Efekti Sesini Çıkarma
- Presentation sınıfının bir örneğini oluşturun.
- İndeks aracılığıyla bir slayt referansı alın.
- Efektlerin ana dizisini edinin.
- Her animasyon efektiyle ilişkili gömülü setSound(IAudio value) sesini çıkarın.
Bu Java kodu, bir animasyon efektine gömülü sesi nasıl çıkaracağınızı gösterir:
// Sunum dosyasını temsil eden bir Presentation sınıfını örnekler.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Slaytın ana dizisini alır.
ISequence sequence = slide.getTimeline().getMainSequence();
for (IEffect effect : sequence)
{
if (effect.getSound() == null)
continue;
// Efekt sesini byte dizisi olarak çıkarır
byte[] audio = effect.getSound().getBinaryData();
}
} finally {
if (presentation != null) presentation.dispose();
}
Animasyondan Sonra
Aspose.Slides for Java, bir animasyon efektinin After animation (Animasyondan Sonra) özelliğini değiştirmenize olanak tanır.
Bu, Microsoft PowerPoint’teki Animasyon Efekti bölmesi ve genişletilmiş menüsüdür:

PowerPoint Effect After animation (Animasyondan Sonra) açılır listesi aşağıdaki özelliklerle eşleşir:
- setAfterAnimationType(int value) özelliği, animasyondan sonra türünü tanımlar :
- PowerPoint More Colors AfterAnimationType.Color tipine eşittir;
- PowerPoint Don’t Dim öğesi AfterAnimationType.DoNotDim tipine eşittir (varsayılan animasyondan sonra türüdür);
- PowerPoint Hide After Animation öğesi AfterAnimationType.HideAfterAnimation tipine eşittir;
- PowerPoint Hide on Next Mouse Click öğesi AfterAnimationType.HideOnNextMouseClick tipine eşittir;
- setAfterAnimationColor(IColorFormat value) özelliği, bir animasyondan sonra renk formatını tanımlar. Bu özellik, AfterAnimationType.Color tipiyle birlikte çalışır. Türü başka bir tipe değiştirirseniz, animasyondan sonra renk temizlenir.
Bu Java kodu, bir animasyondan sonra efektini nasıl değiştireceğinizi gösterir:
// Sunum dosyasını temsil eden bir Presentation sınıfını örnekler.
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Ana dizinin ilk efektini alır
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// After animation tipini Color olarak değiştirir
firstEffect.setAfterAnimationType(AfterAnimationType.Color);
// After animation karartma rengini ayarlar
firstEffect.getAfterAnimationColor().setColor(Color.BLUE);
// PPTX dosyasını diske yazar
pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Metni Animasyonla
Aspose.Slides, bir animasyon efektinin Animate text (Metni Animasyonla) bloğuyla çalışmanıza olanak tanıyan aşağıdaki özellikleri sağlar:
- setAnimateTextType(int value) efekti için bir metin animasyon türünü tanımlar. Şekil metni şu şekilde animasyonlanabilir:
- Hepsi bir anda (AnimateTextType.AllAtOnce tipi)
- Kelime bazında (AnimateTextType.ByWord tipi)
- Harf bazında (AnimateTextType.ByLetter tipi)
- setDelayBetweenTextParts(float value) animasyonlu metin parçaları (kelimeler veya harfler) arasındaki gecikmeyi ayarlar. Pozitif değer, efekt süresinin yüzde olarak belirlenmesini sağlar. Negatif değer ise saniye cinsinden gecikmeyi belirtir.
Effect Animate text (Efekt Metni Animasyonla) özelliklerini şu şekilde değiştirebilirsiniz:
- Şekle animasyon uygula ya da animasyon efektini alın.
- By Paragraphs (Paragraflara Göre) animasyon modunu kapatmak için
setBuildType(int value)özelliğini BuildType.AsOneObject değerine ayarlayın. - setAnimateTextType(int value) ve setDelayBetweenTextParts(float value) özelliklerine yeni değerler atayın.
- Değiştirilmiş PPTX dosyasını kaydedin.
Bu Java kodu işlemi gösterir:
// Sunum dosyasını temsil eden bir Presentation sınıfını örnekler.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Ana dizinin ilk efektini alır
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Efektin Metin animasyon tipini "As One Object" olarak değiştirir
firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);
// Efektin Metni Animasyon tipini "By word" olarak değiştirir
firstEffect.setAnimateTextType(AnimateTextType.ByWord);
// Kelimeler arasındaki gecikmeyi efekt süresinin %20'si olarak ayarlar
firstEffect.setDelayBetweenTextParts(20f);
// PPTX dosyasını diske yazar
pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
SSS
Sunumu web’e yayınlarken animasyonların korunmasını nasıl sağlarım?
HTML5’e Dönüştür ve seçenekleri etkinleştirerek şekil ve geçiş animasyonlarını aktif hale getirin. Düz HTML slayt animasyonlarını çalıştırmaz, HTML5 ise çalıştırır.
Şekillerin z-order (katman sırası) değişikliği animasyonu nasıl etkiler?
Animasyon ve çizim sırası birbirinden bağımsızdır: bir efekt, görünme/kaybolma zamanını ve tipini kontrol eder, z-order ise neyin neyin üzerinde olacağını belirler. Görünür sonuç, ikisinin birleşimiyle tanımlanır. (Bu, genel PowerPoint davranışıdır; Aspose.Slides efekti‑ve‑şekil modeli aynı mantığı izler.)
Belirli efektler için animasyonları videoya dönüştürürken sınırlamalar var mı?
Genel olarak animasyonlar desteklenir, ancak nadir durumlarda veya belirli efektlerde farklı render sonuçları ortaya çıkabilir. Kullandığınız efektleri ve kütüphane sürümünü test etmeniz önerilir.