static Drawing CreateCharacterDrawing(char c, Color color, bool fillBg)
{
if (color == Colors.Black)
color = Colors.White;
DrawingGroup dGroup = new DrawingGroup();
Brush brush = new SolidColorBrush(color);
using (DrawingContext dc = dGroup.Open())
{
var typeFace = new Typeface(new FontFamily("Lucida Console"),
FontStyles.Normal,
FontWeights.Bold,
FontStretches.Normal);
var formattedText = new FormattedText(
c.ToString(),
System.Globalization.CultureInfo.GetCultureInfo("en-us"),
FlowDirection.LeftToRight,
typeFace,
16, Brushes.Black);
var geometry = formattedText.BuildGeometry(new System.Windows.Point(0, 0));
var bg = fillBg ? Brushes.Black : Brushes.Transparent;
var pen = fillBg ? null : new Pen(Brushes.Black, 0.5);
dc.DrawRectangle(bg, null, new Rect(new Size(formattedText.Width, formattedText.Height)));
dc.DrawGeometry(brush, pen, geometry);
}
return dGroup;
}