[]
DsImaging provides ApplyGlow method in GrayscaleBitmap class that will be used to add glow effect as well as soft edges to graphics. The glow effect inflates all non-transparent areas of the image by the specified amount and then applies the Gaussian blur to make the border smooth. The soft edges effect deflates non-transparent areas, then applies the Gaussian blur. The glow and soft edges effects are usually applied to a full-color image within a GcBitmap. The first parameter of the method is set to a positive value (for glow effect) or a negative value (for soft edges effect) as per the requirement.
Glow Effect | Soft Edges Effect |
---|---|
Refer to the following example to apply the glow effect:
// Initialize TextLayout.
var tl = new TextLayout(96f);
// Configure text format.
var f1 = new TextFormat
{
FontName = "Calibri",
FontSize = 120,
ForeColor = Color.DarkOrchid,
FontBold = true
};
var f2 = new TextFormat(f1)
{
ForeColor = Color.White,
StrokePen = new Pen(Color.DarkOrchid, 3)
};
// Append the text.
tl.Append("Grape", f1);
tl.Append("City", f2);
// Initialize GcBitmap.
using var bmp = new GcBitmap(880, 390, false);
// Create the graphic using text layout defined.
using (var g = bmp.CreateGraphics(Color.DarkGray))
{
g.DrawTextLayout(tl, new PointF(100, 80));
}
// Save the image without glow.
bmp.SaveAsPng("WithoutGlow.png");
// Draw the text on a transparent bitmap at first.
using (var g = bmp.CreateGraphics(Color.Transparent))
{
g.Renderer.SlowAntialiasing = true;
g.DrawTextLayout(tl, new PointF(100, 80));
}
// Convert the image to a transparency mask.
using var gs = bmp.ToGrayscaleBitmap(ColorChannel.Alpha);
// Apply the glow effect to the transparency mask.
gs.ApplyGlow(4, 6);
/* Map a shadow from the transparency mask to the source GcBitmap drawing opaque pixels with glow color (yellow).
Apply some additional transparency.*/
gs.ToShadowBitmap(bmp, Color.Yellow, 0.8f);
// Fill the background.
bmp.ConvertToOpaque(Color.Gray);
// Draw the text over the prepared background.
using (var g = bmp.CreateGraphics())
{
g.Renderer.SlowAntialiasing = true;
g.DrawTextLayout(tl, new PointF(100, 80));
}
// Save the image with glow.
bmp.SaveAsPng("WithGlow.png");
Refer to the following example to apply the soft edges effect:
// Initialize PathBuilder.
var pb = new PathBuilder();
pb.BeginFigure(100, 350);
pb.AddLine(210, 310);
// Define an arc.
var arc = new ArcSegment
{
Size = new SizeF(183, 173),
SweepDirection = SweepDirection.Clockwise,
Point = new PointF(550, 205),
};
// Add arcs and lines.
pb.AddArc(arc);
pb.AddLine(650, 170);
pb.AddLine(680, 250);
pb.AddLine(575, 285);
arc.Point = new PointF(240, 390);
pb.AddArc(arc);
pb.AddLine(130, 430);
pb.EndFigure(true);
pb.Figures.Add(new EllipticFigure(new RectangleF(295, 197, 200, 190)));
var gpFill = pb.ToPath();
var gpStroke = gpFill.Widen(new Pen(Color.Black, 20));
// Draw the image.
using var bmp = new GcBitmap(800, 600, false);
var renderer = bmp.EnsureRendererCreated();
bmp.Clear(Color.RosyBrown);
renderer.FillPath(gpFill, Color.CornflowerBlue);
renderer.FillPath(gpStroke, Color.Moccasin);
// Save the image without soft edges.
bmp.SaveAsPng("WithoutSoftEdges.png");
// Draw the figure on a transparent background.
bmp.Clear(Color.Transparent);
renderer.FillPath(gpFill, Color.CornflowerBlue);
renderer.FillPath(gpStroke, Color.Moccasin);
// Convert the image to the transparency mask.
using var gs = bmp.ToGrayscaleBitmap(ColorChannel.Alpha);
// Apply the soft edges effect to the transparency mask.
gs.ApplyGlow(-4, 8);
// Draw the original image.
bmp.Clear(Color.RosyBrown);
renderer.TransparencyMaskBitmap = gs;
renderer.FillPath(gpFill, Color.CornflowerBlue);
renderer.FillPath(gpStroke, Color.Moccasin);
// Save the image with soft edges.
bmp.SaveAsPng("WithSoftEdges.png");