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

Messages postés
88
Date d'inscription
jeudi 25 septembre 2003
Dernière intervention
20 avril 2010
- 23 sept. 2009 à 11:15 - Dernière réponse :
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 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 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
23 sept. 2009 à 16:43
3
Merci
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.

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de f0xi
Meilleure réponse
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
23 sept. 2009 à 22:38
3
Merci
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)

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de f0xi
Meilleure réponse
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
24 sept. 2009 à 21:40
3
Merci
longeur et hauteur du canvas d'impression :


L = Canvas.ClipRect.Right - Canvas.ClipRect.Left
H = Canvas.ClipRect.Bottom - Canvas.ClipRect.Top

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de f0xi
Messages postés
88
Date d'inscription
jeudi 25 septembre 2003
Dernière intervention
20 avril 2010
23 sept. 2009 à 18:52
0
Merci
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
Messages postés
88
Date d'inscription
jeudi 25 septembre 2003
Dernière intervention
20 avril 2010
24 sept. 2009 à 10:21
0
Merci
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.