drawRect en millimètres

Bonjour

J’ai un programme qui a besoin de dessiner des éléments en unité millimétrique.

J’ai une sous classe de UIView qui utilise la méthode drawRect.
Le rectangle passé en argument est un rectangle exprimé en points.
Un point est 1 pouce divisé par 72. 1 pouce est égal à 25.4 mm
Un point mesure donc en millimètre 25.4 divisé par 72.

Ma vue occupe occupe tout l’écran. Sur un iPhone 8 Plus, le rectangle fournit a une taille de 414 par 736 points.
Si j’utilise cette conversion cela donne (414 pt, 736 pt) => (146.05 mm, 259.64 mm)

D’après la fiche technique l’iphone 8 plus a un ppi (pixels par pouces) de 401.
La résolution de l’écran est de 1920 par 1080 pixels.
La dimension de l’écran en pouces est donc 1920/401 par 1080/401. Ce qui donne environ 4,788 par 2,693.
En millimètre, cela donne environ 121.61 par 68.4. Cela se vérifie physiquement sur le téléphone.

Où est mon erreur ?

Oui, en 72ppi… et non pas 401ppi.

ppi= pixel per inch
dpi = dot per inch
1 point vaut toujours 25.4 mm divisé par 72

https://developer.apple.com/library/archive/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html#//apple_ref/doc/uid/TP40010156-CH14-SW7

Note: In the context of PDF rendering and printing, Core Graphics defines « point » using the industry standard mapping of one point to 1/72 of an inch.

Oui pardon, en effet, en français il y a le problème de ppp / ppp ! :joy:
Je parlais de 72 DPI (dots) vs. 401 PPI (pixels).

						    W		 H
			in	   1	2.693	 4.788
			pt	  72	  194	   345
			mm	25.4	68.41	121.62
iPhone 8	px 	 401	 1080	  1920