Skip to content

Instantly share code, notes, and snippets.

@aspose-com-gists
Created September 23, 2022 10:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aspose-com-gists/adc78141f124556a3e9c96462bf523f0 to your computer and use it in GitHub Desktop.
Save aspose-com-gists/adc78141f124556a3e9c96462bf523f0 to your computer and use it in GitHub Desktop.
Create Drop Shadow Effect on SVG Programmatically in C#
// Initialize an object of SVGDocument class
Aspose.Svg.SVGDocument document = new Aspose.Svg.SVGDocument();
// Set SVG Namespace Url
string SvgNamespace = "http://www.w3.org/2000/svg";
// Get root svg element of the document
Aspose.Svg.SVGSVGElement svgElement = document.RootElement;
// Create a defs element and add to the svgElement
Aspose.Svg.SVGDefsElement defsElement = (Aspose.Svg.SVGDefsElement)document.CreateElementNS(SvgNamespace, "defs");
svgElement.AppendChild(defsElement);
// Create a filter element and add to the defsElement
var filterElement = (Aspose.Svg.SVGFilterElement)document.CreateElementNS(SvgNamespace, "filter");
filterElement.Id = "shadow";
filterElement.SetAttribute("x", "-20px");
filterElement.SetAttribute("y", "-20px");
filterElement.SetAttribute("height", "150px");
filterElement.SetAttribute("width", "150px");
defsElement.AppendChild(filterElement);
// Create a feOffset filter primitive and add to the filterElement
var feOffsetElement = (Aspose.Svg.Filters.SVGFEOffsetElement)document.CreateElementNS(SvgNamespace, "feOffset");
feOffsetElement.In1.BaseVal = "SourceAlpha";
feOffsetElement.SetAttribute("result", "offset");
feOffsetElement.SetAttribute("dx", "3");
feOffsetElement.SetAttribute("dy", "3");
filterElement.AppendChild(feOffsetElement);
//// Create a feGaussianBlur filter primitive and add to the filterElement
//var feGaussianBlurElement = (Aspose.Svg.Filters.SVGFEGaussianBlurElement)document.CreateElementNS(SvgNamespace, "feGaussianBlur");
//feGaussianBlurElement.In1.BaseVal = "offset";
//feGaussianBlurElement.StdDeviationX.BaseVal = 3;
//feGaussianBlurElement.StdDeviationY.BaseVal = 3;
//feGaussianBlurElement.SetAttribute("result", "blur");
//filterElement.AppendChild(feGaussianBlurElement);
// Create a feBlend filter primitive and add to the filterElement
var feBlendElement = (Aspose.Svg.Filters.SVGFEBlendElement)document.CreateElementNS(SvgNamespace, "feBlend");
feBlendElement.In1.BaseVal = "SourceGraphic";
feBlendElement.In2.BaseVal = "blur";
feBlendElement.SetAttribute("mode", "normal");
filterElement.AppendChild(feBlendElement);
// Create a text element and add to the svgElement
var textElement = (Aspose.Svg.SVGTextElement)document.CreateElementNS(SvgNamespace, "text");
textElement.Style.FontSize = "5em";
textElement.SetAttribute("x", "20px");
textElement.SetAttribute("fill", "#C0C0C0");
textElement.SetAttribute("y", "100px");
textElement.TextContent = "Aspose.SVG API";
textElement.SetAttribute("filter", "url(#shadow)");
svgElement.InsertBefore(textElement, svgElement.FirstChild);
// Save the SVG document
document.Save(Path.Combine(dataDir, "DropShadow.svg"));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment