.NET'te Sunum Temalarını Yönet
Giriş
Bir sunum teması, tasarım öğelerinin özelliklerini tanımlar. Bir sunum teması seçtiğinizde, aslında belirli bir görsel öğe kümesini ve bunların özelliklerini seçmiş olursunuz.
PowerPoint’te bir tema, renkler, fonts, background styles ve efektlerden oluşur.

Tema Rengini Değiştir
Bir PowerPoint teması, slayttaki farklı öğeler için belirli bir renk seti kullanır. Renkleri beğenmezseniz, temaya yeni renkler uygulayarak değiştirirsiniz. Yeni bir tema rengi seçebilmeniz için Aspose.Slides, SchemeColor sayımında değerler sağlar.
Bu C# kodu, bir tema için vurgu rengini nasıl değiştireceğinizi gösterir:
using (Presentation pres = new Presentation())
{
IAutoShape shape = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 10, 10, 100, 100);
shape.FillFormat.FillType = FillType.Solid;
shape.FillFormat.SolidFillColor.SchemeColor = SchemeColor.Accent4;
}
Bu şekilde, elde edilen rengin etkili değerini belirleyebilirsiniz:
var fillEffective = shape.FillFormat.GetEffective();
Console.WriteLine($"{fillEffective.SolidFillColor.Name} ({fillEffective.SolidFillColor})"); // ff8064a2 (Renk [A=255, R=128, G=100, B=162])
Renk değişimi işlemini daha da göstermek için, başka bir öğe oluşturup vurgu rengini (ilk işlemeden) ona atarız. Ardından temadaki rengi değiştiririz:
IAutoShape otherShape = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 10, 120, 100, 100);
otherShape.FillFormat.FillType = FillType.Solid;
otherShape.FillFormat.SolidFillColor.SchemeColor = SchemeColor.Accent4;
pres.MasterTheme.ColorScheme.Accent4.Color = Color.Red;
Yeni renk her iki öğeye de otomatik olarak uygulanır.
Ek Palet’ten Tema Rengini Ayarla
Ana tema rengine(1) parlaklık dönüşümleri uyguladığınızda, ek paletten(2) renkler oluşur. Daha sonra bu tema renklerini ayarlayabilir ve alabilirsiniz.

1 - Ana tema renkleri
2 - Ek paletten gelen renkler.
Bu C# kodu, ek palet renklerinin ana tema renginden elde edilip şekillerde kullanıldığı bir işlemi gösterir:
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// Vurgu 4
IShape shape1 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 10, 10, 50, 50);
shape1.FillFormat.FillType = FillType.Solid;
shape1.FillFormat.SolidFillColor.SchemeColor = SchemeColor.Accent4;
// Vurgu 4, %80 Daha Açık
IShape shape2 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 10, 70, 50, 50);
shape2.FillFormat.FillType = FillType.Solid;
shape2.FillFormat.SolidFillColor.SchemeColor = SchemeColor.Accent4;
shape2.FillFormat.SolidFillColor.ColorTransform.Add(ColorTransformOperation.MultiplyLuminance, 0.2f);
shape2.FillFormat.SolidFillColor.ColorTransform.Add(ColorTransformOperation.AddLuminance, 0.8f);
// Vurgu 4, %60 Daha Açık
IShape shape3 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 10, 130, 50, 50);
shape3.FillFormat.FillType = FillType.Solid;
shape3.FillFormat.SolidFillColor.SchemeColor = SchemeColor.Accent4;
shape3.FillFormat.SolidFillColor.ColorTransform.Add(ColorTransformOperation.MultiplyLuminance, 0.4f);
shape3.FillFormat.SolidFillColor.ColorTransform.Add(ColorTransformOperation.AddLuminance, 0.6f);
// Vurgu 4, %40 Daha Açık
IShape shape4 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 10, 190, 50, 50);
shape4.FillFormat.FillType = FillType.Solid;
shape4.FillFormat.SolidFillColor.SchemeColor = SchemeColor.Accent4;
shape4.FillFormat.SolidFillColor.ColorTransform.Add(ColorTransformOperation.MultiplyLuminance, 0.6f);
shape4.FillFormat.SolidFillColor.ColorTransform.Add(ColorTransformOperation.AddLuminance, 0.4f);
// Vurgu 4, %25 Daha Koyu
IShape shape5 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 10, 250, 50, 50);
shape5.FillFormat.FillType = FillType.Solid;
shape5.FillFormat.SolidFillColor.SchemeColor = SchemeColor.Accent4;
shape5.FillFormat.SolidFillColor.ColorTransform.Add(ColorTransformOperation.MultiplyLuminance, 0.75f);
// Vurgu 4, %50 Daha Koyu
IShape shape6 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 10, 310, 50, 50);
shape6.FillFormat.FillType = FillType.Solid;
shape6.FillFormat.SolidFillColor.SchemeColor = SchemeColor.Accent4;
shape6.FillFormat.SolidFillColor.ColorTransform.Add(ColorTransformOperation.MultiplyLuminance, 0.5f);
presentation.Save("example.pptx", SaveFormat.Pptx);
}
SchemeColor‘ı IColorScheme Renklerine Eşleme
SchemeColor ile çalışırken, aşağıdaki tema renk değerlerini içerdiğini fark edebilirsiniz: Background1, Background2, Text1 ve Text2.
Ancak Presentation.MasterTheme.ColorScheme IColorScheme döndürür ve karşılık gelen renkleri şu şekilde sunar: Dark1, Dark2, Light1 ve Light2.
Bu fark yalnızca adlandırmada ortaya çıkar. Bu değerler aynı tema renk yuvalarına gönderme yapar ve eşleme sabittir:
Text1=Dark1Background1=Light1Text2=Dark2Background2=Light2
Text/Background ile Dark/Light arasında dinamik bir dönüşüm yoktur. Bunlar aynı tema renkleri için alternatif adlardır.
Bu adlandırma farkı, Microsoft Office terminolojisinden kaynaklanmaktadır. Eski Office sürümleri Dark 1, Light 1, Dark 2 ve Light 2 kullanırken, yeni UI sürümleri aynı yuvaları Text 1, Background 1, Text 2 ve Background 2 olarak gösterir.
Tema Yazı Tipini Değiştir
Tema ve diğer amaçlar için yazı tiplerini seçmenizi sağlamak amacıyla, Aspose.Slides bu özel tanımlayıcıları (PowerPoint’te kullanılanlara benzer) kullanır:
- +mn-lt - Gövde Yazı Tipi Latin (Küçük Latin Yazı Tipi)
- +mj-lt - Başlık Yazı Tipi Latin (Büyük Latin Yazı Tipi)
- +mn-ea - Gövde Yazı Tipi Doğu Asya (Küçük Doğu Asya Yazı Tipi)
- +mj-ea - Başlık Yazı Tipi Doğu Asya (Büyük Doğu Asya Yazı Tipi)
Bu C# kodu, Latin yazı tipini bir tema öğesine atamanızı gösterir:
IAutoShape shape = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 10, 10, 100, 100);
Paragraph paragraph = new Paragraph();
Portion portion = new Portion("Theme text format");
paragraph.Portions.Add(portion);
shape.TextFrame.Paragraphs.Add(paragraph);
portion.PortionFormat.LatinFont = new FontData("+mn-lt");
Bu C# kodu, sunum temasının yazı tipini nasıl değiştireceğinizi gösterir:
pres.MasterTheme.FontScheme.Minor.LatinFont = new FontData("Arial");
Tüm metin kutularındaki yazı tipi güncellenecektir.
TIP
PowerPoint yazı tiplerine göz atmak isteyebilirsiniz.Tema Arka Plan Stilini Değiştir
Varsayılan olarak, PowerPoint uygulaması 12 önceden tanımlı arka plan sunar ancak bu 12 arka planın yalnızca 3’ü tipik bir sunumda kaydedilir.

Örneğin, PowerPoint uygulamasında bir sunumu kaydettikten sonra, sunumdaki önceden tanımlı arka plan sayısını öğrenmek için bu C# kodunu çalıştırabilirsiniz:
using (Presentation pres = new Presentation("pres.pptx"))
{
int numberOfBackgroundFills = pres.MasterTheme.FormatScheme.BackgroundFillStyles.Count;
Console.WriteLine($"Number of background fill styles for theme is {numberOfBackgroundFills}");
}
Bu C# kodu, bir sunum için arka planı nasıl ayarlayacağınızı gösterir:
pres.Masters[0].Background.StyleIndex = 2;
Dizin rehberi: 0 dolgu yok anlamına gelir. Dizin 1’den başlar.
TIP
PowerPoint Arka Planına göz atmak isteyebilirsiniz.Tema Efektini Değiştir
Bir PowerPoint teması genellikle her stil dizisi için 3 değer içerir. Bu diziler, üç etkiye (hafif, orta, yoğun) birleştirilir. Örneğin, bir şekle efektler uygulandığında ortaya çıkan sonuç aşağıdaki gibidir:

FormatScheme sınıfındaki 3 özellik (FillStyles, LineStyles, EffectStyles) kullanarak bir temadaki öğeleri değiştirebilirsiniz (PowerPoint’teki seçeneklerden daha esnek bir şekilde).
Bu C# kodu, öğelerin bölümlerini değiştirerek bir tema efektinin nasıl değiştirileceğini gösterir:
using (Presentation pres = new Presentation("Subtle_Moderate_Intense.pptx"))
{
pres.MasterTheme.FormatScheme.LineStyles[0].FillFormat.SolidFillColor.Color = Color.Red;
pres.MasterTheme.FormatScheme.FillStyles[2].FillType = FillType.Solid;
pres.MasterTheme.FormatScheme.FillStyles[2].SolidFillColor.Color = Color.ForestGreen;
pres.MasterTheme.FormatScheme.EffectStyles[2].EffectFormat.OuterShadowEffect.Distance = 10f;
pres.Save("Design_04_Subtle_Moderate_Intense-out.pptx", SaveFormat.Pptx);
}
Ortaya çıkan dolgu rengi, dolgu türü, gölge efekti vb. değişiklikler:

SSS
Bir temayı ana temayı değiştirmeden tek bir slayta uygulayabilir miyim?
Evet. Aspose.Slides, slayt düzeyinde tema geçersiz kılmalarını destekler, bu sayede yalnızca o slayta yerel bir tema uygulayabilir ve ana temayı (via the SlideThemeManager) aynı tutabilirsiniz.
Bir temayı bir sunumdan diğerine taşırken en güvenli yöntem nedir?
Clone slides birlikte ana temalarıyla hedef sunuma kopyalayarak. Bu, orijinal ana temayı, düzenleri ve ilişkili temayı korur, böylece görünüm tutarlı kalır.
Tüm kalıtım ve geçersiz kılmalardan sonra “etkili” değerleri nasıl görebilirim?
API’nin “effective” görünümlerini tema/renk/yazı tipi/efekt için kullanın. Bunlar, ana temanın ve herhangi bir yerel geçersiz kılmanın uygulanmasından sonra çözümlenmiş, son özellikleri döndürür.