Preciso converter pixels em pontos em c #. Eu já vi algumas explicações complicadas sobre o tópico, mas não consigo localizar uma fórmula simples. Vamos assumir um padrão de 96 dpi, como calculo essa conversão?
125
Existem 72 pontos por polegada ; se for suficiente assumir 96 pixels por polegada, a fórmula é bastante simples:
pontos = pixels * 72/96
Existe uma maneira de obter os pixels configurados por polegada da tela no Windows usando GetDeviceCaps
. A Microsoft possui um guia chamado "Desenvolvendo aplicativos com reconhecimento de DPI" , procure a seção "Criando fontes com reconhecimento de DPI".
O W3C definiu a medição de pixel px
como exatamente 1/96 de 1in, independentemente da resolução real da tela, portanto, a fórmula acima deve ser boa para todo o trabalho na web.
Tente isso se o seu código estiver em um formulário:
fonte
Assumir 96dpi é um grande erro. Mesmo se a suposição estiver correta, também há uma opção para dimensionar fontes. Portanto, uma fonte definida para 10pts pode realmente ser mostrada como se fosse 12,5pt (125%).
fonte
Começando com o dado:
Se você deseja encontrar pontos (pt) com base em pixels (px):
Reorganizando:
tão:
fonte
O WPF converte pontos em pixels com o System.Windows.FontSizeConverter. O FontSizeConverter usa o System.Windows.LengthConverter. O LengthConverter usa o fator 1.333333333333333333 para converter de pontos (p) para pixels (x): x = p * 1.333333333333333333
fonte
System.Drawing.Graphics possui propriedades DpiX e DpiY. DpiX é pixels por polegada horizontalmente. DpiY é pixels por polegada na vertical. Use para converter de pontos (72 pontos por polegada) em pixels.
Ex: 14 pontos horizontais = (14 * DpiX) / 72 pixels
fonte
Certamente toda essa questão deve ser:
"Como obtenho o PPI horizontal e vertical (pixels por polegada) do monitor?"
Existem 72 pontos em uma polegada (por definição, um "ponto" é definido como 1/72 da polegada, da mesma forma que um "pica" é definido como 1/72 da polegada). Com esses dois bits de informação, você pode converter de px para pt e voltar com muita facilidade.
fonte
Na verdade, deve ser
fonte
pontos = (pixels / 96) * 72 em uma máquina XP / Vista / 7 padrão (padrões de fábrica)
points = (pixels / 72) * 72 em um Mac padrão executando o OSX (padrões de fábrica)
Windows é executado como padrão em 96dpi (tela) Macs é executado como padrão em 72 dpi (tela)
72 pontos de POSTSCRIPT = 1 polegada 12 pontos de POSTSCRIPT = 1 polegada de POSTSCRIPT 6 picas de POSTSCRIPT = 72 pontos = 1 polegada
1 ponto = 1⁄72 polegadas = 25,4⁄72 mm = 0,3527 mm
DPI = pontos por polegada PPI = pixels por polegada LPI = linhas por polegada
Mais informações se usá-los como medidas
16px = 1em (padrão para texto normal) 8em = 16px * 8 pixels / 16 = em
fonte
Isso funciona:
fonte
Usando o wxPython no Mac para obter o DPI correto da seguinte maneira:
Isso produz:
x-DPI: 72 y-DPI: 72
Assim, a fórmula é:
points: int = (pixelNumber * 72) // 72
fonte
Linhas de altura convertidas em pontos e pixels (minha própria fórmula). Aqui está um exemplo com uma entrada manual de 213,67 pontos no campo Altura da linha:
Aqui, a entrada manual de 213,67 pontos fornece 284 pixels.
Aqui, a entrada manual de 213,68 pontos fornece 285 pixels.
(Por que 0,45? Eu não sei, mas funciona.)
fonte