Как вернуть символ семейства шрифтов по индексу

У меня есть название семейства шрифтов и индекс определенного символа из этого семейства.

Пример: у меня есть семейство шрифтов «Wingdings 2» и индекс 33. Если вы перейдете к http://www.alanwood.net/demos/wingdings-2.html и посмотрите на первый элемент, который имеет индекс 33, это будет шариковая ручка.

У меня вопрос: как получить самого персонажа в C#? Мне нужно нарисовать этого персонажа в моем приложении.

Я изучил все методы и свойства классов Font и FontFamily, но не вижу ничего, что могло бы помочь.

Изменить: я знаю, как нарисовать символ с помощью графического объекта, проблема на самом деле заключается в извлечении символа в первую очередь, зная только семейство шрифтов и индекс символа в данном семействе шрифтов.

нельзя ли просто использовать графический объект и строку, представляющую только этот символ, и нарисовать его где угодно?

Sebastian L 10.08.2018 14:40

Я умею рисовать, проблема в том, чтобы нарисовать персонаж, зная только семейство шрифтов и индекс этого символа в семействе шрифтов.

pfinferno 10.08.2018 14:45
0
2
103
1

Ответы 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;
}

Теперь у вас есть изображение любых символов в любом шрифте, который вам нужен.

Привет, спасибо за ответ, но не совсем то, что мне нужно. Я умею рисовать, проблема в том, чтобы нарисовать персонаж, зная только семейство шрифтов и индекс этого символа в семействе шрифтов.

pfinferno 10.08.2018 14:45

ну для Fontfamily вы можете просто создать шрифт msdn.microsoft.com/de-de/library/6xaya1yk(v=vs.110).aspx

Sebastian L 10.08.2018 14:53

Я думаю, я был сбит с толку тем, как здесь работают шрифты. Я использовал Convert.ToChar (CharacterIndex), затем применил семейство шрифтов, и, похоже, теперь он работает :)

pfinferno 10.08.2018 14:59

Другие вопросы по теме