Trouver longueur string qui sera réellement imprimée [Résolu]

cs_Jean-Pierre 88 Messages postés jeudi 25 septembre 2003Date d'inscription 20 avril 2010 Dernière intervention - 23 sept. 2009 à 11:15 - Dernière réponse : f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention
- 24 sept. 2009 à 21:40
Salut,

Suite à ce lien et source de Barbichette :
http://www.delphifr.com/code.aspx?ID=45606

Voilà, je reste perplexe devant ce problème tout bête :

Par exemple mon imprimante possède une résolution de 600 pixels par pouce.
La string en test représente une valeur de 742 pixels.
Mesure effectuée à l'aide de ces sources :
http://www.delphifr.com/forum/sujet-FONCTION-TEXTSIZE-DANS-UNITE_781683.aspx
http://www.delphifr.com/codes/CALCULER-LONGUEUR-PIXELS-TEXTE-SANS-CANVAS-AVEC-TEXTWIDTH_12473.aspx
(Différence minime en résultat, entres ces deux méthodes)

Je cherche tout simplement la "recette" afin de trouver la longueur à laquelle sera imprimée une string donnée.

Sur une bidouille, j'avais trouvé une formule pas très précise, mais pas trop mauvaise :
Celle de prendre le résultat de la longueur string en pixels, et la multiplier par 0,254...

En résumé : est-il possible de mesurer avec précision la longueur d'une string qui sera ensuite imprimée ?

Me confirmez-vous la formule à Barbichette ?
taille en mm = (taille en pixels) * 25.4 / résolution

Non pas que je doute de lui, mais sur son zip de démo, les rapports entre longueur string et résultat en millimètres sont absolument différents.

Mais peut-être que mon écran plat assez large, fausse toute mesure sur la longueur réelle imprimée ?

Merci de toute remarque et idée.
Afficher la suite 

5 réponses

Répondre au sujet
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 23 sept. 2009 à 16:43
+3
Utile
1cm = 0.393700787 inch
1inch = 2.54cm

1cm = 10mm
1mm = 0,1cm

1inch = 25,4 mm
1mm = 0.0393700787 inch



taille d'une feuille A4 210mm x 297mm (r 0.707)
taille d'une feuille A4 en pouce 8.26771653 x 11.6929134 (r 0.707)

impression 72dpi : 595.27559 x 841.889765 pix (r = 0.707)
impression 115dpi: 950.787401 x 1344.68504 pix " "
impression 150dpi: 1240.15748 x 1753.93701 pix " "
impression 300dpi: 2480.31496 x 3507.87402 pix " "
impression 600dpi: 4960.62992 x 7015.74804 pix " "


par contre il faut bien faire la difference entre :

resolution de l'impression (selon document)
resolution de l'ecran (selon ecran)
resolution du contexte graphique (selon le canvas)

resolution de l'impression :
taille du canvas (pixel) et taille du document (cm/mm)

resolution de l'ecran :
interroger le systeme dpi Horizontal != dpi Vertical
attention au résolution anamorphique!

resolution du contexte graphique :
interroger le contexte.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 23 sept. 2009 à 22:38
+3
Utile
600 dpi pour combien en longueur de document ?

sinon dans le canvas d'impression :

W = canvas.ClipRect.Right - canvas.ClipRect.Left;


si longueur de S > W alors tu sais qu'elle sera en dehors des limites du document.

le mieux etant de d'utiliser DrawString avec un ClipRect incluant les marges pour faire un WordWrap ou clippé la chaine.

donc, si :

LS = 1000pixel
que
R = 600dpi
IMM = 25.4


MM = LS/R * IMM
soit
MM 1000/600 * 25.4 42.3333333 mm (4.2334cm)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 24 sept. 2009 à 21:40
+3
Utile
longeur et hauteur du canvas d'impression :


L = Canvas.ClipRect.Right - Canvas.ClipRect.Left
H = Canvas.ClipRect.Bottom - Canvas.ClipRect.Top
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
cs_Jean-Pierre 88 Messages postés jeudi 25 septembre 2003Date d'inscription 20 avril 2010 Dernière intervention - 23 sept. 2009 à 18:52
0
Utile
f0xi, toujours présent

Très intéressante aussi ta récap, comme beaucoup de tes réponses d'ailleurs.

Mais ça ne répond pas à directement à ma question, quant à la formule à adopter

Pour tenter de simplifier :

En gros j'ai 600 de réso imprimante (je sais comment obtenir ce param).
J'ai une string, disons de 1000 pixels.

Comment ferais-tu pour obtenir la taille en millimètre de ce qui sera imprimé ?

C'est aussi simple que ça, enfin pas si évident pour tout le monde. Car j'ai fouiné un peu partout sur le Web...

Je recherche à mesurer une string, pas une page ou un dessin, non... simplement une petite ligne sur un edit ou un caption.

J'ai au moins une grosse pointure que vient de me répondre ;-)

Merci @+
Commenter la réponse de cs_Jean-Pierre
cs_Jean-Pierre 88 Messages postés jeudi 25 septembre 2003Date d'inscription 20 avril 2010 Dernière intervention - 24 sept. 2009 à 10:21
0
Utile
f0xi, je crois que je vais enfin pouvoir avancer, grâce à tes dernières explications.

> 600 dpi pour combien en longueur de document ?
(= Indéterminé)

Tu remarqueras que tu as été le seul à te lancer au bouillon

Merci à toi.

@+
Commenter la réponse de cs_Jean-Pierre

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.