Como faço para converter "gdicharset byte" para o nome do script / linguagem?

votos
0

A classe FontDialog em C # tem uma propriedade AllowScriptChange, que permite ao usuário selecionar o script (Ocidental, hebraico, árabe, turco, etc). Quando ativada, a caixa suspensa oferece todas essas opções e tudo o que está disponível, dependendo da fonte selecionada.

Se o diálogo for bem sucedida, a fonte selecionada tem GdiCharSet definir um valor de 0-255. 177 é hebraico, 161 é grego, etc. Existe uma função que irá converter de valor a corda? Eu posso escrever uma instrução switch mim, mas eu gostaria de fazê-lo da maneira certa.

Esta é uma lista parcial: http://msdn.microsoft.com/en-us/library/cc194829.aspx

Editar : A função que irá converter de CharSet a página de códigos iria funcionar, também, porque eu acho que obter o nome de uma página de código deve ser fácil.

Publicado 15/05/2009 em 22:42
fonte usuário
Em outras línguas...                            


1 respostas

votos
5

Se você não quiser usar um interruptor como sobre o uso de um enum? Algo como:

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
    }

E você pode configurar um método de extensão se seu usando .NET 3.5

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

Assim, você pode usá-lo em seu código assim:

string name = Font.GdiCharSet.ToGdiName();

EDIT: Agora que penso nisso, você provavelmente deve alterar o valor de retorno do método de extensão para ser o enum, então:

return (CharSet)GdiCharSet;

Dessa forma, você pode comparar também:

If (Font.GdiCharSet.ToCharSet() == CharSet.ANSI_CHARSET) {...}
Respondeu 16/05/2009 em 01:13
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more