Convertir des Pixels en Points

j'ai besoin de convertir les Pixels en Points en C#. J'ai vu des explications compliquées sur le sujet, mais je n'arrive pas à trouver une formule simple. Supposons un 96dpi standard, Comment puis-je calculer cette conversion?

113
demandé sur Todd Davis 2008-09-26 17:57:28

11 réponses

il y a 72 points par pouce ; s'il est suffisant de supposer 96 pixels par pouce, La formule est assez simple:

points = pixels * 72 / 96

il y a un moyen d'obtenir les pixels configurés par pouce de votre écran dans Windows en utilisant GetDeviceCaps . Microsoft a un guide intitulé "développer des Applications compatibles avec les DPI" , cherchez la section "Créer des Applications compatibles avec les DPI" Police."

le W3C a défini la mesure de pixel px comme exactement 1/96ème de 1in quelle que soit la résolution réelle de votre écran, de sorte que la formule ci-dessus devrait être bon pour tous les travaux sur le web.

175
répondu Mark Ransom 2017-06-07 14:58:23

essayez ceci si votre code se trouve dans une forme:

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

en supposant que 96dpi est une énorme erreur. Même si l'hypothèse est juste, il y a aussi une option d'échelle des polices. Ainsi, une police définie pour 10pts peut être affichée comme si elle était de 12.5 pt (125%).

23
répondu Joel Coehoorn 2009-07-03 15:19:01

commençant par le donné:

  • il y a 72 points dans un pouce (c'est ce qu'est un point, 1/72 d'un pouce)
  • sur un système réglé à 150 dpi, il y a 150 pixels par pouce.
  • 1 in = 72pt = 150px (pour le réglage de 150dpi)

si vous voulez trouver des points (pt) basés sur les pixels (px):

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

réarrangement:

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

so:

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

WPF convertit les points en pixels avec le système.Windows.FontSizeConverter. Le FontSizeConverter utilise le système.Windows.LengthConverter. La directive LengthConverter utilise le facteur 1.3333333333333333 pour convertir les points (p) en pixels (x): x = p * 1.333333333333333333

10
répondu Heind 2010-09-02 18:44:34
Système

.Dessin.Les graphiques ont des propriétés DpiX et dpi. DpiX est le nombre de pixels par pouce horizontalement. L'IRM est en pixels par pouce verticalement. Utilisez ceux-ci pour convertir des points (72 points par pouce) en pixels.

Ex: 14 points horizontaux = (14 * DpiX) / 72 pixels

4
répondu spotcatbug 2008-09-26 14:45:19

sûrement toute cette question devrait être:

" Comment puis-je obtenir le PPI horizontal et vertical (Pixels par pouce) du moniteur?"

il y a 72 points par pouce (par définition, un" point "est défini comme 1/72nd de pouce, de même qu'un" pica " est défini comme 1/72nd de pied). Avec ces deux informations, vous pouvez convertir px de pt et arrière très facilement.

4
répondu JeeBee 2009-07-03 13:45:54

en fait, il doit être

points = pixels * 96 / 72
4
répondu david 2010-07-12 12:10:24

points = (pixels / 96) * 72 de la norme XP/Vista/7 machine (réglages par défaut)

points = (pixels / 72) * 72 sur un standard de Mac OSX (paramètres d'Usine)

Windows s'exécute par défaut à 96 dpi (display) Mac exécuter en tant que par défaut à 72 dpi (affichage)

72 Points POSTSCRIPT = 1 pouce 12 Points POSTSCRIPT = 1 Pica POSTSCRIPT 6 Picas POSTSCRIPT = 72 Points = 1 inch

1 point = 1⁄72 pouces = 25,4⁄72 mm = 0,3527 mm

DPI = points par pouce PPI = Pixels par pouce LPI = lignes par pouce

complément d'information Si vous utilisez em comme mesure

16px = 1em (par défaut pour un texte normal) 8em = 16px * 8 Pixels / 16 = em

4
répondu Bubba Tbone 2012-01-09 22:43:28

Cela fonctionne:

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

lignes de hauteur converties en points et pixels (ma propre formule). Voici un exemple avec une entrée manuelle de 213,67 points dans le champ Row Height:

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

ici l'entrée manuelle de 213,67 points donne 284 pixels.

Ici l'entrée manuelle de 213.68 points donne 285 pixels.

(pourquoi 0,45? Je ne sais pas, mais il fonctionne.)

-1
répondu daniel 2015-06-24 02:00:05