OutlinedText.cs
//// This code is part of Document Solutions for Imaging demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.IO;using System.Drawing;using System.Collections.Generic;using GrapeCity.Documents.Drawing;using GrapeCity.Documents.Text;using GrapeCity.Documents.Imaging;using GCTEXT = GrapeCity.Documents.Text;using GCDRAW = GrapeCity.Documents.Drawing;
namespace DsImagingWeb.Demos{ // Creating outlined text public class OutlinedText { public GcBitmap GenerateImage(Size pixelSize, float dpi, bool opaque, string[] sampleParams = null) { var bmp = new GcBitmap(pixelSize.Width, pixelSize.Height, opaque, dpi, dpi); using (var g = bmp.CreateGraphics(Color.White)) { var tl = g.CreateTextLayout();
// Set up text layout: tl.MaxWidth = g.Width; tl.MaxHeight = g.Height; tl.MarginAll = g.Resolution / 2; const float fontSize = 64;
var rcBack = new RectangleF(0, 0, pixelSize.Width, pixelSize.Height); g.DrawImage(GCDRAW.Image.FromFile(Path.Combine("Resources", "Images", "purples.jpg")), rcBack, null, ImageAlign.StretchImage);
var tf0 = new TextFormat() { ForeColor = Color.LemonChiffon, Hollow = true, Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSans-Bold.ttf")), FontSize = fontSize, }; tl.AppendLine("Hollow Text", tf0);
var tf1 = new TextFormat() { StrokePen = Color.DarkMagenta, FillBrush = new GCDRAW.SolidBrush(Color.Yellow), Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "FoglihtenNo07.otf")), FontSize = fontSize, }; tl.AppendLine("Outlined Text", tf1);
var grad0 = new LinearGradientBrush(Color.Red, new PointF(0, 0), Color.Blue, new PointF(1, 0)); var tf2 = new TextFormat() { FillBrush = grad0, Font = tf0.Font, FontSize = fontSize, }; tl.AppendLine("Gradient Fill", tf2);
var grad1 = new LinearGradientBrush(Color.Red, Color.Purple); grad1.GradientStops = new List<GradientStop>() { new GradientStop(Color.Orange, 1 / 6f), new GradientStop(Color.Yellow, 2 / 6f), new GradientStop(Color.Green, 3 / 6f), new GradientStop(Color.Cyan, 4 / 6f), new GradientStop(Color.Blue, 5 / 6f) }; TextFormat tf3 = new TextFormat() { FillBrush = grad1, Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSerif-Bold.ttf")), FontSize = fontSize, }; tl.AppendLine("Multi-stop gradient", tf3);
var tf4 = new TextFormat(tf3); tf4.StrokePen = Color.GreenYellow; tl.AppendLine("Multi-stop gradient with outline", tf4);
var tf5 = new TextFormat(tf4); tf5.Hollow = true; tf5.StrokePen = new GCDRAW.Pen(Color.DarkRed, g.Resolution / 72); tl.AppendLine("Text outlined with 1pt wide pen", tf5);
// It is not necessary to call PerformLayout() for a newly created TextLayout // or after a call to TextLayout.Clear(): g.DrawTextLayout(tl, PointF.Empty); } // Done: return bmp; } }}