• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Cybernavigator

Converter Graphicunits

1 mensagem neste tópico

Boas, para quem não sabe GraphicUnits são unidades que o C# usa para saber o sistema em que o tamanho do texto se enquadra.

Então estas podem ser: Inches, Pixels, Points, Document, World, etc.

Bom, deparei-me com um problemazito, se eu em C# converter de points para qualquer unidade é simples, defino a unidade que quero no texto e faço SizeInPoints e ele retorna-me o valor na unidade convertida.

Até aqui tudo bem.

Fiz um teste com o document, e 8 Points = 1,97723 (aproximadamente) Documents.

Certo, então pegando no valor obtido e convertendo agora para points daria 8 points, certo?? Errado.

Como o points é unidade de sistema o C# não me converte direito para points, vá-se lá perceber o porquê.

Como tal vi-me forçado a fazer a conversão por uma regra de 3 simples, 1,97 Document = 8 points Então (8*x)/1,97 = y Points

Bom, então chegando a esta conclusão fiz rapidamente um conversor de qualquer unidade para qualquer unidade.

        private double ConverterUnidades(float Valor, GraphicsUnit De, GraphicsUnit Para)
        {
            Font mFont = new Font("Times New Roman", 1, FontStyle.Regular, Para);
            double valor1 = mFont.SizeInPoints;
            mFont = new Font("Times New Roman", 1, FontStyle.Regular, De);
            double valor2 = mFont.SizeInPoints;
            return (Valor * valor1) / valor2;
        }

Espero que vos seja util, a mim vai ser...  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora