ReflectionEffect.cs
//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.Drawing;using GrapeCity.Documents.Word;
namespace DsWordWeb.Demos{ // This example shows how to add reflection effect to text and shapes in a DOCX. public class ReflectionEffect { public GcWordDocument CreateDocx() { var doc = new GcWordDocument();
// Custom text reflection: var style0 = doc.Styles.Add("style0", StyleType.Paragraph); style0.Font.Size = 48; // apply top half touching reflection effect to the text Reflection reflection = style0.Font.Effects.Reflection; reflection.Distance = 0f; reflection.Angle = 90f; reflection.Blur = 0.5f; reflection.Alignment = RectangleAlignment.BottomLeft; reflection.ScaleX = 100f; reflection.ScaleY = -100f; reflection.SkewX = 0f; reflection.SkewY = 0f; reflection.StartOpacity = 60f; reflection.EndOpacity = 0.9f; reflection.StartOpacityPosition = 0f; reflection.EndOpacityPosition = 58f; reflection.OpacityAngle = 90f; doc.Body.Paragraphs.Add("Custom text reflection.", style0);
// Built-in text reflection (visually the same as the custom reflection above): var style1 = doc.Styles.Add("style1", StyleType.Paragraph); style1.Font.Size = 48; // apply top half touching reflection effect to the text style1.Font.Effects.ApplyBuiltInReflection(BuiltInReflectionId.HalfTouching); doc.Body.Paragraphs.Add("Built-in text reflection.", style1);
// Shape reflection - direct effects: Paragraph p = doc.Body.Paragraphs.Add(); Run run = p.GetRange().Runs.Add(); Shape shape = run.GetRange().Shapes.Add(100, 100, GeometryType.Heptagon); shape.Fill.Type = FillType.Solid; shape.Fill.SolidFill.RGB = Color.PeachPuff; shape.Line.Width = 4; shape.Line.Fill.SolidFill.ThemeColor = ThemeColorId.Accent1; shape.Effects.ApplyBuiltInReflection(BuiltInReflectionId.TightTouching); p.GetRange().Runs.Add("Shape reflection - direct effects.", doc.Styles[BuiltInStyleId.Strong]);
// Shape reflection - style effects: p = doc.Body.Paragraphs.Add(); p.Style.ParagraphFormat.Spacing.SpaceBefore = 50; run = p.GetRange().Runs.Add(); shape = shape = run.GetRange().Shapes.Add(100, 100, GeometryType.Heptagon); shape.Fill.Type = FillType.Solid; shape.Fill.SolidFill.RGB = Color.PeachPuff; shape.Line.Width = 4; shape.Line.Fill.SolidFill.ThemeColor = ThemeColorId.Accent1; // Apply tight touching reflection effect to the new effect record: var fmtEffect = doc.Theme.FormatScheme.Effects.Add(); fmtEffect.ApplyBuiltInReflection(BuiltInReflectionId.TightTouching); // Apply new effect style to shape: shape.Style.Effects.ThemeEffects = fmtEffect; p.GetRange().Runs.Add("Shape reflection - style effects.", doc.Styles[BuiltInStyleId.Strong]);
// Done: return doc; } }}