public class PlaceHolderController : Controller
{
private const string ContentType = "image/svg+xml; charset=utf-8";
// GET: PlaceHolder
public ActionResult Index(string widthStr, string heightStr, string fontColorStr, string bkColorStr)
{
var dataDir = Server.MapPath("/Content");
var document = new SVGDocument(dataDir + "\\template.svg");
document.RootElement.SetAttribute("width", widthStr);
document.RootElement.SetAttribute("height", heightStr);
document.RootElement.SetAttribute("viewBox", $"0 0 {widthStr} {heightStr}");
var rect = document.GetElementById("rect1") as SVGRectElement;
if (rect == null) return Content(document.RootElement.OuterHTML, ContentType);
rect.SetAttribute("width", widthStr);
rect.SetAttribute("height", heightStr);
rect.Style.SetProperty("fill", "#" + bkColorStr, string.Empty);
var text = document.GetElementById("text1") as SVGTextElement;
if (text == null) return Content(document.RootElement.OuterHTML, ContentType);
var width = uint.Parse(widthStr);
var height = uint.Parse(heightStr);
text.SetAttribute("x", (width / 2).ToString());
text.SetAttribute("y", (height / 2).ToString());
text.TextContent = $"{widthStr}x{heightStr}";
text.Style.SetProperty("font-family", "Arial", "");
var fontSize = Math.Round(Math.Max(12, Math.Min(.75 * Math.Min(width, height), 0.75 * Math.Max(width, height) / 12)));
text.Style.SetProperty("font-size", $"{fontSize}px", "");
text.Style.SetProperty("fill", "#" + fontColorStr, string.Empty);
return Content(document.RootElement.OuterHTML, ContentType);
}
}
Comments