Cherche api pour ecrire

Signaler
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Statut
Membre
Dernière intervention
27 novembre 2009
-
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Statut
Membre
Dernière intervention
27 novembre 2009
-
Salut à tous,
Le but de mon programme c'est d'écrire un caractere ou une phrase 
dans la picturebox...
on va prendre l'exemple d'une picturebox avec un width x et un height y

(j'utilise l'api CreateFont (pour ma police) et l'api TextOut pour écrire dans la picturebox.)
 
le caractere ou ma phrase doit prendre toute la place de la picturebox, une police qui s'adapte....
les caracteres ont la meme hauteur que la picturebox..la phrase meme si elle est longue, elle doit tenir dans la picturebox

à une police de 20;la taille d'un caractere est de 0,35

il faut que je trouve une formule comme ca

TaillePoliceSuivantTaillePictureBox =  ................??? :)

5 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
130
Utilise la fonction DrawText plutôt qui te permet de calculer le rectangle englobant le texte : tant que le rectangle est plus grand que la taille du picturebox, alors réduire la police...
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Statut
Membre
Dernière intervention
27 novembre 2009

Re,
DrawText ne gère pas la hauteur des caractères mais juste la longueur, j'ai tenté de faire toutes les combinaisons possible avec ..
elle donne juste une police pour la longueur des caractères
j'ai besoin d'avoir les 2, longueur et hauteur
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
130
Si si, il me semble bien que la fonction gère la hauteur et la largeur pour le rectangle englobant (il faut utiliser le flag DT_CALCRECT), en tout cas je m'en suis déjà servit pour ce genre de chose (calcul de la taille de police optimale pour rentrer dans un rectangle).
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Bonjour,

1) tu as raison d'utiliser TextOut
2) tu as raison de "jouer" avec l'espacement de la police
3) il te faut également "calculer" un peu. TextWidth et Textheight t'y aideront (aide en ligne), mais tu peux les calculer également par API.


Tout le reste n'est que pure arithmétique....
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Statut
Membre
Dernière intervention
27 novembre 2009

Lu DARSIDIOUS et jmfmarques : )

en ce moment je suis sur un projet qui me prend toutes mes nuits, dés que j'ai fini....j'vais tenté ta méthode Dark

jmfmarques,
j'ai passé 6 mois à faire cette source(10 000 lignes de code) et je l'ai abandonné à cause du problème de police...

j'utilise  GetTextExtentPoint32  pour connaitre  le textwidth et heightText ....mais rien à faire....mon cerveau à du mal!!!
 j'arrive pas à cette fonction qui me donne la bonne taille de police

voici mon ancienne technique :

rapport =  (PoliceTaille.Text * 0.35) / Pic.Width

quand j'augmente la taille de la pic ,je fais ca pour trouver la bonne police à mettre 

 xH = (.Height) / 15
 xW = rapport * .Width
CreateMyFont = CreateFont(xH, xW, 0, 0, FW_.............
selectobject .hdc, CreateMyFont
TextOut .hdc, 0, 0, Txt, Len(Txt)

quand c'est un mot ou une petite phrase,cette operation marche bien
j'ai le bon rapport... mais quand il s'agit d'une longue phrase, j'ai un dépassement de caractères