Как мне преобразовать «byte gdicharset» в название скрипта / языка? - PullRequest
0 голосов
/ 16 мая 2009

Класс FontDialog в C # имеет свойство «AllowScriptChange», которое позволяет пользователю выбирать сценарий (западный, иврит, арабский, турецкий и т. Д.). Если этот параметр включен, раскрывающийся список содержит все эти параметры и все, что доступно в зависимости от выбранного шрифта.

Если диалоговое окно успешно, выбранный шрифт имеет GdiCharSet установить значение от 0 до 255. 177 - это иврит, 161 - греческий и т. Д. Есть ли функция, которая преобразует значение в строку? Я могу написать заявление о смене самостоятельно, но я бы хотел сделать это Правильно.

Это неполный список: http://msdn.microsoft.com/en-us/library/cc194829.aspx

Редактировать : Функция, которая преобразует CharSet в кодовую страницу, тоже будет работать, потому что я думаю, что получить имя кодовой страницы должно быть легко.

1 Ответ

5 голосов
/ 16 мая 2009

Если вы не хотите использовать переключатель, как насчет использования enum? Что-то вроде:

public enum CharSet : byte
{
        ANSI_CHARSET = 0,
        DEFAULT_CHARSET = 1,
        SYMBOL_CHARSET = 2,
        SHIFTJIS_CHARSET = 128,
        HANGEUL_CHARSET = 129,
        HANGUL_CHARSET = 129,
        GB2312_CHARSET = 134,
        CHINESEBIG5_CHARSET = 136,
        OEM_CHARSET = 255,
        JOHAB_CHARSET = 130,
        HEBREW_CHARSET = 177,
        ARABIC_CHARSET = 178,
        GREEK_CHARSET = 161,
        TURKISH_CHARSET = 162,
        VIETNAMESE_CHARSET = 163,
        THAI_CHARSET = 222,
        EASTEUROPE_CHARSET = 238,
        RUSSIAN_CHARSET = 204
    }

И вы можете настроить метод расширения, если вы используете .NET 3.5

public static class GdiCharHelper
{
    public static string ToGdiName(this byte GdiCharSet)
    {
            return Enum.GetName(typeof(CharSet), GdiCharSet);
    }
}

Так что вы можете использовать его в своем коде так:

string name = Font.GdiCharSet.ToGdiName();

РЕДАКТИРОВАТЬ: Теперь, когда я думаю об этом, вам, вероятно, следует изменить возвращаемое значение метода Extension на enum, поэтому:

return (CharSet)GdiCharSet;

Таким образом, вы тоже можете сравнить:

If (Font.GdiCharSet.ToCharSet() == CharSet.ANSI_CHARSET) {...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...