Necesito convertir píxeles en puntos en C#. He visto explicaciones complicadas sobre el tema, pero parece que no puedo encontrar una fórmula simple. Supongamos un 96dpi estándar, ¿cómo calculo esta conversión?Convertir píxeles a puntos
Respuesta
Hay 72 points per inch; si es suficiente para asumir 96 píxeles por pulgada, la fórmula es bastante simple:
puntos = píxeles * 72/96
Hay una manera de conseguir los píxeles configurados por pulgada de la pantalla en Windows utilizando GetDeviceCaps
. Microsoft tiene una guía llamada "Developing DPI-Aware Applications", busque la sección "Creación de fuentes de DPI-Aware".
El W3C ha definido la medición de píxeles px
como exactamente 1/96th of 1in independientemente de la resolución real de su pantalla, por lo que la fórmula anterior debería ser buena para todos los trabajos web.
Sin duda, toda esta cuestión debería ser:
"? ¿Cómo se obtiene el PPI horizontal y vertical (píxeles por pulgada) del monitor"
Hay 72 puntos en una pulgada (por definición, un "punto" se define como 1/72 de una pulgada, del mismo modo una "pica" se define como 1/72o de un pie). Con estos dos bits de información puede convertir de px a pt y volver muy fácilmente.
Para hacerlo aún más complicado, estoy tratando de alinear cosas en un informe de Reporting Services (RDL) que se está convirtiendo en un PDF. Al final del día, ¿quién diablos sabe qué es el DPI? Estoy usando mi mejor suposición. :) –
Quiere decir "¿Cómo obtengo el DPI vertical y horizontal del monitor?". PPI es una constante de 72. Siempre ha sido y siempre lo será. – Xetius
píxeles por pulgada, no puntos por pulgada (Pica). – JeeBee
Suponiendo que 96dpi es un error enorme error. Incluso si la suposición es correcta, también hay una opción para escalar las fuentes. Por lo tanto, una fuente establecida para 10 pts se puede mostrar realmente como si fuera 12.5pt (125%).
Esto no parece ser una respuesta ... – MadSkunk
@MadSkunk En septiembre de 2008, no pudimos dejar comentarios todavía. –
System.Drawing.Graphics tiene propiedades DpiX y DpiY. DpiX es píxeles por pulgada horizontalmente. DpiY es píxeles por pulgada verticalmente. Úselos para convertir puntos (72 puntos por pulgada) en píxeles.
Ex: 14 puntos horizontales = (14 * DPix)/72 píxeles
Prueba esto si su código se encuentra en una forma:
Graphics g = this.CreateGraphics();
points = pixels * 72/g.DpiX;
g.Dispose();
¿Vale la pena señalar que DpiX es para Width donde DpiY se debe usar para la altura? – PandaWood
A partir de lo dado:
- Hay 72 puntos en una pulgada (eso es lo que es un punto, 1/72 de pulgada)
- en un sistema establecido para 150 ppp, hay 150 píxeles por pulgada.
- 1 en = 72pt = 150 píxeles (por 150dpi configuración)
Si usted quiere encontrar puntos (pt), basado en píxeles (px):
72 pt x pt
------ = ----- (1) for 150dpi system
150 px y px
Reordenando:
x = (y/150) * 72 (2) for 150dpi system
manera:
points = (pixels/150) * 72 (3) for 150dpi system
ppp en la primera ecuación debe ser px - para cancelar los términos, ya que tenemos la suposición (1) para el sistema 150dpi –
En realidad debe ser
points = pixels * 96/72
Esto es incorrecto si se presupone 96dpi y 72ppi (puntos por pulgada). Será points = pixels * 72/96 –
Líneas de altura convertidas en puntos y píxeles (mi propia fórmula). Aquí se muestra un ejemplo con una entrada manual de 213.67 puntos en el campo de fila Altura:
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
Aquí la entrada manual de 213.67 puntos da 284 píxeles.
Aquí la entrada manual de 213.68 puntos da 285 píxeles.
(¿Por 0,45? No lo sé, pero funciona.)
WPF convierte puntos de píxeles con el System.Windows.FontSizeConverter. FontSizeConverter usa System.Windows.LengthConverter. LengthConverter utiliza el factor 1.333333333333333333 para convertir de puntos (p) a píxeles (x): x = p * 1.3333333333333333
Explique también * por qué * se utiliza este valor ... Coincidentemente, es 96 ppp (por defecto DPI de ventanas para pantallas)/72 ppp (DPI que los puntos están definidos en). –
Me gusta esta respuesta, pero creo que debería ser solo "use FontSizeConverter", y déjalo así. – McKay
puntos = (píxeles/96) * 72 en una máquina XP/Vista/7 estándar (valores predeterminados de fábrica)
puntos = (píxeles/72) * 72 en un Mac que funcionan con OS X (valores predeterminados de fábrica)
Windows se ejecuta por defecto en 96 ppp (pantalla) Mac corren por defecto a 72 ppp (pantalla)
72 POSTSCRIPT Points = 1 inch 12 POSTSCRIPT Points = 1 POSTSCRIPT Pica 6 POSTSCRIPT Picas = 72 puntos = 1 pulgada
1 punto = 1/72 pulgadas = 25.4/72 mm = 0,3527 mm
DPI = puntos por pulgada PPI = píxeles por pulgada LPI = líneas por pulgada
Más información si se utiliza em como la medición de
16px = 1 em (por defecto para el texto normal) 8EM = 16px * 8 píxeles/16 = em
Esto funciona:
int pixels = (int)((dp) * Resources.System.DisplayMetrics.Density + 0.5f);
- 1. Android: Convertir puntos en píxeles
- 2. Convertir mm a píxeles
- 3. Convertir píxeles a sp
- 4. Convierta píxeles a puntos para pdf
- 5. Convertir lat/lon a píxeles y volver
- 6. MATLAB ¿Cómo convertir coordenadas de ejes a coordenadas de píxeles?
- 7. GNU Make convertir espacios a dos puntos
- 8. píxeles a centímetros?
- 9. OpenCV 2.3: Convertir Mat a matriz de píxeles RGBA
- 10. jQuery/JavaScript: convertir píxeles a em de una manera fácil
- 11. Convertir píxeles a pulgadas y viceversa en C#
- 12. Android - píxeles a salsas
- 13. Convertir lienzo o puntos de control a SVG
- 14. Cómo convertir píxeles en dip (Density Independent Pixels) en Android
- 15. Convertir el formato de píxeles de WriteableBitmap a Bgra32 en C# wpf
- 16. asignando puntos a bandejas
- 17. Ciclo a través de píxeles con opencv
- 18. ¿A cuántos píxeles equivale un espacio?
- 19. Cómo extraer los datos de píxeles ¿Usa el paquete de mapas de puntos de R?
- 20. Convertir XML a psobject
- 21. Cómo convertir imágenes a html?
- 22. android la definición píxeles independientes de densidad
- 23. ¿Cómo puedo convertir curveTo() en una lista de puntos?
- 24. Cómo detectar puntos que son drásticamente diferentes a sus vecinos
- 25. Convertir ImageSource a BitmapImage - WPF
- 26. android: measureText() Devuelve píxeles basados en píxeles escalados
- 27. ggplot2: Agregar puntos a geom_line
- 28. ¿Hay puntos de referencia en J2MEPolish al convertir una aplicación J2ME a Android?
- 29. ¿Cómo configuro la resolución al convertir archivos de puntos (graphviz) a imágenes?
- 30. Cuál es la relación entre píxeles y píxeles escalados
72 puntos por pulgada NO es un elemento discutible, es el mismo en todos los ámbitos! –
@David dpi depende de la pantalla, ppi es una constante tipográfica –
No lo creo: http://www.retouchpro.com/forums/archive/t-10019.html – VVS