Jump to content


- - - - -

Transformar Pixel Em Mm










8 respostas a este tópico

#1 Tecc

    Membro - Pleno 1

  • (*)Insigne
  • 882 posts
  • Estado:São Paulo

Adicionado 13 September 2004 - 02:23 PM

Olá pessoal tudo bom com vcs?

Gente é o seguinte estou procurando uma função que converta Pixels em Milímetros ou Centímetros... Alguém teria essa função ou saberia como se faz a conversão?

Desde já agradecido.

#2 martins_vicente

    Membro - Pleno 1

  • (*)Insigne
  • 1259 posts
  • Estado:São Paulo

Adicionado 13 September 2004 - 02:45 PM

Caro Tecc,

Pesquisando na web encontrei referências indicando que 1 cm vale entre 36 e 40 pixels. É um pouco relativo... mas espero que ajude!

Boa sorte!

#3 Paulo Gurgel

    Já esvaziou sua xícara hoje?

  • (*)Insigne
  • 10447 posts
  • Você é Humano?:Sim
  • Sexo:Masculino
  • Estado:São Paulo

Adicionado 13 September 2004 - 06:50 PM

Amigo, é complicado pois se você for pensar em tela vai depender muito da resolução.

Para impressão o gerenciador de relatórios FastReport considera como sendo 18 pixels = 5 mm.

No caso do FR eu garanto que está na mosca ;)

#4 ivantgm

    piece of cake

  • Membros
  • PipPipPipPipPipPipPipPip
  • 710 posts
  • Estado:São Paulo

Adicionado 14 September 2004 - 07:39 PM

Existe a função membro PixelsPerInch. Esta função se encontra nas classes TFont, TForm, TScreen. Não sei se é o caso, mas não custa experimentar...

#5 RebeL_InsidE

    Don't panic

  • (*)Insigne
  • 951 posts
  • Estado:Santa Catarina

Adicionado 14 September 2004 - 08:44 PM

Tecc,

Só é possível converter PX em MM se você tem os PPI (Pixels Per Inch - também conhecido como DPI: Dots Per Inch)

Um monitor de computador geralmente tem 96 DPI (96 pixels per inch). Uma polegada (Inch) tem 2.54 centimetros (ou 25.4 milimetros). A partir dai é só aplicar uma fórmula:

96px ---- 2.54cm
x ---- n

96 * n = 2.54 * x

n = 2.54 * x / 96

onde:
x é o número de pixels que vai ocupar na tela (ou na impressora)
n é o número de centímetros que vai ser visivel

Por exemplo: 20px em um monitor, vai resultar em aproximadamente 0.53cm

n = 2.54 * 20 / 96
n = 0,52916666666666666666666666666667

Para saber quantos PPI um device tem (tela, impressora etc), use a função da API do Windows GetDeviceCaps:

  GetDeviceCaps(
    DC, // HDC de um device
    LOGPIXELSX // Número de PPI horizontal. Para o vertical, use LOGPIXELSY
  );

Note que em alguns devices, a qtd de DPI horizontal é diferente da vertical!


--rb

Editado por RebeL_InsidE, 14 September 2004 - 08:54 PM.


#6 Tecc

    Membro - Pleno 1

  • (*)Insigne
  • 882 posts
  • Estado:São Paulo

Adicionado 15 September 2004 - 09:40 AM

Rebel a princípio gostaria de te agradecer pela resposta e te perguntar aonde é q vc aprende esses conceitos em Delphi? Achei surpreendente.

Só me dá um exemplo prático para essa parte aki q eu não entendi bem

GetDeviceCaps(DC, //essa parte aki, Qual a propriedade q eu usoLOGPIXELSX);

#7 Tecc

    Membro - Pleno 1

  • (*)Insigne
  • 882 posts
  • Estado:São Paulo

Adicionado 15 September 2004 - 09:47 AM

Axo q consegui, é assim q usa?:

var n : real;
tecc : integer;
begin

tecc := GetWindowDC(GetDesktopWindow);
tecc :=  GetDeviceCaps(tecc,LOGPIXELSX);

n := 2.54 * 20 / tecc;
Label1.Caption := floattostr(n);
end;

Editado por Seu-Madruga, 21 January 2005 - 06:15 PM.


#8 RebeL_InsidE

    Don't panic

  • (*)Insigne
  • 951 posts
  • Estado:Santa Catarina

Adicionado 15 September 2004 - 02:29 PM

Quote

aonde é q vc aprende esses conceitos em Delphi?

Necessidade. Quando o seu chefe chega e fala que quer algo para ontem, você se vira como pode ^^

Quote

Axo q consegui, é assim q usa?

Isso mesmo, mas só uma pequena consideração:

Não sobrescreva a variável 'tecc' que contém o HDC do device, crie uma variável DC, por exemplo, e outra pra conter o valor de PPI.

Depois que você usar o DC, libere-o da memória usando a função ReleaseDC (caso você tenha criado o DC usando a função CreateDC então use a função DeleteDC)

--rb

#9 RebeL_InsidE

    Don't panic

  • (*)Insigne
  • 951 posts
  • Estado:Santa Catarina

Adicionado 15 September 2004 - 02:35 PM

Ah! Outros valores constantes interessantes são:

1 pica = 12 pontos (points)
1 ponto = 1/72 polegadas (inches)


É muito comum você ver a medida 'ponto' (point ou pt). A maioria dos programas que manipulam texto usam essa medida pois ela é relativa à polegada e não aos pixels. Logo 12 pt no monitor é do mesmo tamanho que 12pt numa impressora de 300DPI.

--rb





1 usuário(s) esta(ão) lendo este tópico

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)