Converter os Pixels em pontos

Tenho de converter Pixels em pontos em C#. Vi algumas explicações complicadas sobre o tema, mas não consigo localizar uma fórmula simples. Vamos supor um 96dpi padrão, como eu chamo esta conversão?

Author: Todd Davis, 2008-09-26

11 answers

Existem 72 pontos por polegada ; Se for suficiente assumir 96 pixels por polegada, a fórmula é bastante simples:

Pontos = pixels * 72 / 96

Existe uma forma de obter os pixels configurados por polegada do seu ecrã nas janelas, usando GetDeviceCaps. A Microsoft tem um guia chamado "desenvolvimento de aplicações dpi-Aware" , procure a secção "criação de fontes dpi-Aware".

O W3C definiu a medição dos pixels px como exactamente 1 / 96 de 1in independentemente da Resolução real do seu ecrã, por isso a fórmula acima deve ser boa para todo o trabalho na web.

 175
Author: Mark Ransom, 2017-06-07 14:58:23

Tente isto se o seu código está num formulário:

Graphics g = this.CreateGraphics();
points = pixels * 72 / g.DpiX;
g.Dispose();
 52
Author: Hejazi, 2009-07-03 12:06:29

Assumindo que o 96dpi é um erroenorme . Mesmo que a suposição esteja certa, há também uma opção para escalar fontes. Então um tipo de letra definido para 10pts pode realmente ser mostrado como se fosse 12,5 pt (125%).

 23
Author: Joel Coehoorn, 2009-07-03 15:19:01

Começando com os dados:

    Há 72 pontos numa polegada (é isso que um ponto é, 1/72 de uma polegada) Num sistema definido para 150dpi, há 150 pixels por polegada.
  • 1 em = 72pt = 150px (para configuração de 150ppp)

Se quiser encontrar pontos (pt) com base em pixels (px):

 72 pt    x pt
------ = -----                  (1) for 150dpi system
150 px    y px

Reorganizar:

x = (y/150) * 72                (2) for 150dpi system

Então:

points = (pixels / 150) * 72    (3) for 150dpi system
 17
Author: Ian Boyd, 2015-05-30 02:56:47

WPF converte pontos em pixels com o sistema.Janela.FontSizeConverter. O FontSizeConverter usa o sistema.Janela.LengthConverter. O LengthConverter usa o fator 1.3333333333333333 para converter de pontos (p) para pixels (x): x = p * 1.33333333333333

 10
Author: Heind, 2010-09-02 18:44:34

Sistema.Desenho.Os gráficos têm propriedades DpiX e PPP. DpiX é pixels por polegada horizontalmente. PPP é pixels por polegada verticalmente. Use aqueles para converter de pontos (72 pontos por polegada) para pixels.

Ex: 14 pontos horizontais = (14 * DpiX) / 72 pixels

 4
Author: spotcatbug, 2008-09-26 14:45:19
[[1]] certamente toda esta questão deve ser: Como posso obter o PPI horizontal e vertical (Pixels por polegada) do monitor?"

Há 72 pontos em uma polegada (por definição, um "ponto" é definido como 1/72 de uma polegada, da mesma forma, um "pica" é definido como 1/72 de um pé). Com estes dois bits de informação você pode converter de px para pt e voltar muito facilmente.

 4
Author: JeeBee, 2009-07-03 13:45:54

Na verdade deve ser

points = pixels * 96 / 72
 4
Author: david, 2010-07-12 12:10:24

Points = (pixels / 96) * 72 on a standard XP / Vista / 7 machine (factory defaults)

Points = (pixels / 72) * 72 on a standard Mac running OSX (Factory defaults)

O Windows funciona por omissão a 96dpi (display) O Macs é executado por omissão a 72 PPP (display)

72 pontos POSTSCRIPT = 1 polegada 12 pontos POSTSCRIPT = 1 Pica POSTSCRIPT 6 Picas POSTSCRIPT = 72 pontos = 1 polegada

1 ponto = 1 72 72 polegadas = 25, 4 72 72 mm = 0, 3527 mm

PPP = pontos por polegada PPI = Pixels Por Polegada LPI = linhas por polegada

Mais informação se usar em como medida

16px = 1em (por omissão para o texto normal) 8em = 16px * 8 Pixels / 16 = em

 4
Author: Bubba Tbone, 2012-01-09 22:43:28

Isto funciona:

int pixels = (int)((dp) * Resources.System.DisplayMetrics.Density + 0.5f);
 1
Author: Michael Zhang, 2016-08-07 05:33:54

Linhas de altura convertidas em pontos e pixels (a minha própria fórmula). Aqui está um exemplo com uma entrada manual de 213.67 pontos no campo de Altura Da Linha:

213.67  Manual Entry    
  0.45  Add 0.45    
214.12  Subtotal    
213.75  Round to a multiple of 0.75 
213.00  Subtract 0.75 provides manual entry converted by Excel  
284.00  Divide by 0.75 gives the number of pixels of height
Aqui a entrada manual de 213,67 pontos dá 284 pixels.
Aqui a entrada manual de 213.68 pontos dá 285 pixels.

(porquê 0, 45? Não sei, mas funciona.)

 -1
Author: daniel, 2015-06-24 02:00:05