Cybernavigator 0 Posted March 5, 2009 Report Share Posted March 5, 2009 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... Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico*** Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now