如何返回给定索引的字体家族的字符

时间:2018-08-10 12:37:37

标签: c# fonts

我有一个字体家族名称和该家族中特定字符的索引。

示例:我的字体家族为“ Wingdings 2”,索引号为33。如果转到http://www.alanwood.net/demos/wingdings-2.html,然后查看第一个项(索引号为33),则该字符为圆珠笔。

我的问题是,如何在C#中检索字符本身?我需要在应用程序中绘制此字符。

我已经遍历了Font和FontFamily类的所有方法和属性,但是我看不到有什么可以帮助的。

编辑:我知道如何使用图形对象绘制字符,实际上,问题是首先只知道字体家族和给定字体家族中的字符索引来检索字符。

1 个答案:

答案 0 :(得分:1)

要绘制字符,可以使用以下代码段:

public static Image DawTextFromFontFamily(string text, FontFamily family, Color textColor, Color backColor)
{
     return DrawText(text, new Font(family, 16), textColor, backColor);
}

public static Image DrawText(String text, Font font, Color textColor, Color backColor)
{
        //first, create a dummy bitmap just to get a graphics object
        Image img = new Bitmap(1, 1);
        Graphics drawing = Graphics.FromImage(img);

        //measure the string to see how big the image needs to be
        SizeF textSize = drawing.MeasureString(text, font);

        //free up the dummy image and old graphics object
        img.Dispose();
        drawing.Dispose();

        //create a new image of the right size
        img = new Bitmap((int)textSize.Width, (int)textSize.Height);

        drawing = Graphics.FromImage(img);

        //paint the background
        drawing.Clear(backColor);

        //create a brush for the text
        Brush textBrush = new SolidBrush(textColor);

        drawing.DrawString(text, font, textBrush, 0, 0);

        drawing.Save();

        textBrush.Dispose();
        drawing.Dispose();

        return img;
}

现在,您可以使用所需的字体显示具有任何字符的图像