Efekt vrženého stínu SVG C#

Obrázky SVG jsou webové vektorové obrázky, které lze vyhledávat, indexovat, komprimovat a skriptovat. Zatímco stíny jsou běžným designovým prvkem, který se používá k tomu, aby byly obrázky esteticky přitažlivé a výrazné. Někdy může být nutné přidat efekt vrženého stínu do obrázku SVG, jako je ikona nebo text atd. V souladu s tím tento článek vysvětluje, jak vytvořit efekt vrženého stínu na obrázku SVG programově v C#.

Efekt vrženého stínu na obrázku SVG – C# API ke stažení zdarma

Aspose.SVG for .NET podporuje práci s obrázky SVG, protože nabízí mnoho funkcí pro úpravu, aktualizaci nebo převod škálovatelné vektorové grafiky programově v C#. Jednoduše otevřete referenční soubory DLL ze stránky Nové verze nebo spusťte příkaz NuGet níže a nakonfigurujte jej z galerie NuGet spolu se všemi závislostmi, pokud existují.

PM> Install-Package Aspose.SVG

Jak vytvořit efekt vrženého stínu na obrázku SVG v C#

Následující kroky popisují celý proces přidání efektu vrženého stínu na obrázek SVG:

  1. Vytvořte objekt třídy SVGDocument.
  2. Nastavte adresu URL jmenného prostoru SVG a získejte kořenový prvek SVG.
  3. Vytvořte element defs a filterElement pro připojení primitiva filtru feOffset.
  4. Vytvořte filtr feBlend a textový prvek.
  5. Uložte výstupní obraz SVG pomocí efektu Vržený stín voláním metody Uložit.

Vytvořte efekt vrženého stínu na obrázku SVG programově v C#

Chcete-li vytvořit efekt vrženého stínu na obrázku SVG programově v C#, postupujte podle následujících kroků:

  1. Vytvořte objekt třídy SVGDocument.
  2. Nastavte adresu URL jmenného prostoru SVG a získejte kořenový prvek SVG.
  3. Vytvořte element defs a filterElement pro připojení primitiva filtru feOffset.
  4. Vytvořte filtr feBlend a textový prvek.
  5. Uložte výstupní obraz SVG s efektem vrženého stínu voláním metody Save.

Níže uvedený fragment kódu ukazuje, jak vytvořit efekt vrženého stínu na obrázku SVG v C#:

// Inicializujte objekt třídy SVGDocument
Aspose.Svg.SVGDocument document = new Aspose.Svg.SVGDocument();

// Nastavit adresu URL jmenného prostoru SVG
string SvgNamespace = "http://www.w3.org/2000/svg";

// Získejte kořenový prvek svg dokumentu
Aspose.Svg.SVGSVGElement svgElement = document.RootElement;

// Vytvořte prvek defs a přidejte jej do svgElement
Aspose.Svg.SVGDefsElement defsElement = (Aspose.Svg.SVGDefsElement)document.CreateElementNS(SvgNamespace, "defs");
svgElement.AppendChild(defsElement);

// Vytvořte prvek filtru a přidejte jej do prvku 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);

// Vytvořte primitivum filtru feOffset a přidejte jej do prvku 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);

//// Vytvořte primitivum filtru feGaussianBlur a přidejte jej do prvku 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("výsledek", "rozmazání");
//filterElement.AppendChild(feGaussianBlurElement);

// Vytvořte primitivum filtru feBlend a přidejte jej do prvku 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);

// Vytvořte textový prvek a přidejte jej do 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);

// Uložte dokument SVG
document.Save(Path.Combine(dataDir, "DropShadow.svg"));

Upozorňujeme, že ve výše uvedeném úryvku kódu je několik řádků kódu zakomentováno. Pokud dáváte přednost rozmazanému efektu vrženého stínu, díky kterému výstup vynikne hladším stínem, můžete jej odkomentovat a aplikovat na stín efekt Gaussova rozostření.

Získejte bezplatnou dočasnou licenci

Můžete požádat o bezplatnou dočasnou licenci pro testování plné kapacity API.

Závěr

V tomto článku jste se naučili, jak vytvořit efekt vrženého stínu na obrázku SVG programově v C#. Stávající obrázek SVG můžete zpracovat jeho načtením nebo vytvořit nový obrázek SVG od začátku v závislosti na vašich požadavcích. Kromě toho můžete navštívit sekci dokumentace, kde se dozvíte mnoho dalších funkcí API. Pokud s námi potřebujete prodiskutovat jakékoli dotazy nebo obavy, neváhejte nás kontaktovat prostřednictvím fóra.

Viz také