จัดการธีมการนำเสนอใน .NET
บทนำ
ธีมการนำเสนอกำหนดคุณสมบัติขององค์ประกอบการออกแบบ เมื่อคุณเลือกธีมการนำเสนอ คุณกำลังเลือกชุดขององค์ประกอบภาพและคุณสมบัติเฉพาะของมัน
ใน PowerPoint ธีมประกอบด้วยสี, ฟอนต์, สไตล์พื้นหลัง, และเอฟเฟกต์

เปลี่ยนสีธีม
ธีม PowerPoint ใช้ชุดสีเฉพาะสำหรับองค์ประกอบต่าง ๆ ในสไลด์ หากคุณไม่ชอบสีเหล่านั้น คุณสามารถเปลี่ยนสีโดยกำหนดสีใหม่ให้กับธีม เพื่อให้คุณเลือกสีธีมใหม่ Aspose.Slides มีค่าสีให้เลือกภายใต้ enumeration SchemeColor
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;
}
คุณสามารถกำหนดค่าที่มีผลของสีที่ได้โดยวิธีนี้:
var fillEffective = shape.FillFormat.GetEffective();
Console.WriteLine($"{fillEffective.SolidFillColor.Name} ({fillEffective.SolidFillColor})"); // ff8064a2 (สี [A=255, R=128, G=100, B=162])
เพื่อสาธิตการเปลี่ยนสีเพิ่มเติม เราจะสร้างองค์ประกอบใหม่และกำหนดสี accent (จากการดำเนินการครั้งแรก) ให้กับมัน จากนั้นเปลี่ยนสีในธีม:
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;
สีใหม่จะถูกนำไปใช้โดยอัตโนมัติบนทั้งสององค์ประกอบ
กำหนดสีธีมจากพาเลตเพิ่มเติม
เมื่อคุณใช้การแปลงความสว่างกับสีธีมหลัก(1) จะได้สีจากพาเลตเพิ่มเติม(2) แล้วคุณสามารถตั้งค่าและดึงค่าสีธีมเหล่านั้นได้

1 - สีธีมหลัก
2 - สีจากพาเลตเพิ่มเติม
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// สี Accent 4
IShape shape1 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 10, 10, 50, 50);
shape1.FillFormat.FillType = FillType.Solid;
shape1.FillFormat.SolidFillColor.SchemeColor = SchemeColor.Accent4;
// สี Accent 4, สว่างขึ้น 80%
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);
// สี Accent 4, สว่างขึ้น 60%
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);
// สี Accent 4, สว่างขึ้น 40%
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);
// สี Accent 4, มืดลง 25%
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);
// สี Accent 4, มืดลง 50%
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
เมื่อคุณทำงานกับ SchemeColor คุณอาจสังเกตว่ามีค่าธีมสีต่อไปนี้:
Background1, Background2, Text1, และ Text2.
อย่างไรก็ตาม Presentation.MasterTheme.ColorScheme คืนค่า IColorScheme ซึ่งเผยสีที่สอดคล้องกันเป็น:
Dark1, Dark2, Light1, และ Light2.
ความแตกต่างนี้เป็นเพียงชื่อเท่านั้น ค่าดังกล่าวอ้างอิงถึงช่องสีธีมเดียวกันและการแมปคงที่:
Text1=Dark1Background1=Light1Text2=Dark2Background2=Light2
ไม่มีการแปลงแบบไดนามิกระหว่าง Text/Background และ Dark/Light เพียงแค่ชื่อที่ต่างกันสำหรับสีธีมเดียวกัน
ความแตกต่างของชื่อมาจากคำศัพท์ของ Microsoft Office รุ่นเก่าใช้ Dark 1, Light 1, Dark 2, Light 2 ส่วน UI รุ่นใหม่แสดงช่องเดียวกันเป็น Text 1, Background 1, Text 2, Background 2
เปลี่ยนฟอนต์ธีม
เพื่อให้คุณเลือกฟอนต์สำหรับธีมและวัตถุประสงค์อื่น ๆ Aspose.Slides ใช้ตัวระบุพิเศษเหล่านี้ (คล้ายกับที่ใช้ใน PowerPoint):
- +mn-lt - ฟอนต์ตัวอักษรหลัก Latin (Minor Latin Font)
- +mj-lt - ฟอนต์หัวเรื่อง Latin (Major Latin Font)
- +mn-ea - ฟอนต์ตัวอักษรหลัก East Asian (Minor East Asian Font)
- +mj-ea - ฟอนต์หัวเรื่อง East Asian (Major East Asian Font)
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");
pres.MasterTheme.FontScheme.Minor.LatinFont = new FontData("Arial");
ฟอนต์ในทุกกล่องข้อความจะได้รับการอัปเดต
TIP
คุณอาจต้องการดู ฟอนต์ใน PowerPoint.เปลี่ยนสไตล์พื้นหลังธีม
โดยค่าเริ่มต้น แอป PowerPoint มีพื้นหลังที่กำหนดไว้ล่วงหน้า 12 แบบ แต่เพียง 3 แบบจาก 12 แบบนั้นจะถูกบันทึกในงานนำเสนอปกติ

ตัวอย่าง หลังจากคุณบันทึกงานนำเสนอในแอป PowerPoint คุณสามารถรันโค้ด C# นี้เพื่อค้นหาจำนวนพื้นหลังที่กำหนดไว้ล่วงหน้าในงานนำเสนอได้:
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}");
}
pres.Masters[0].Background.StyleIndex = 2;
คู่มือดัชนี: 0 ใช้สำหรับไม่มีการเติม ดัชนีเริ่มจาก 1
TIP
คุณอาจต้องการดู พื้นหลัง PowerPoint.เปลี่ยนเอฟเฟ็กต์ธีม
ธีม PowerPoint ปกติมีค่าที่กำหนดไว้ 3 ค่าในแต่ละอาเรย์สไตล์ ซึ่งอาเรย์เหล่านี้รวมกันเป็น 3 เอฟเฟ็กต์: Subtle, Moderate, และ Intense ตัวอย่างผลลัพธ์เมื่อเอฟเฟ็กต์ถูกนำไปใช้กับรูปร่างเฉพาะ:

โดยใช้คุณสมบัติ 3 อย่าง (FillStyles, LineStyles, EffectStyles) จากคลาส FormatScheme คุณสามารถเปลี่ยนองค์ประกอบในธีมได้อย่างยืดหยุ่นกว่าตัวเลือกใน PowerPoint
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);
}
การเปลี่ยนแปลงที่เกิดขึ้นในสีเติม, ประเภทการเติม, เอฟเฟ็กต์เงา ฯลฯ:

FAQ
ฉันสามารถใช้ธีมกับสไลด์เดียวโดยไม่เปลี่ยนมาสเตอร์ได้หรือไม่?
ได้ Aspose.Slides รองรับการแทนที่ธีมระดับสไลด์ ดังนั้นคุณสามารถใช้ธีมเฉพาะกับสไลด์นั้นได้โดยคงธีมมาสเตอร์ไว้ (ผ่าน SlideThemeManager)
วิธีที่ปลอดภัยที่สุดในการย้ายธีมจากงานนำเสนอหนึ่งไปยังอีกงานหนึ่งคืออะไร?
ค Clone slides พร้อมกับมาสเตอร์ของมันไปยังงานนำเป้าหมาย จะรักษามาสเตอร์, เลย์เอาต์ และธีมที่สัมพันธ์กันเพื่อให้รูปลักษณ์คงที่
ฉันจะดูค่าที่ “effective” หลังจากการสืบทอดและการแทนที่ทั้งหมดได้อย่างไร?
ใช้ “effective” views ของ API สำหรับธีม/สี/ฟอนต์/เอฟเฟ็กต์ ซึ่งจะคืนค่าคุณสมบัติสุดท้ายที่ได้หลังจากนำมาสเตอร์มารวมกับการแทนที่ระดับท้องถิ่น.