| obtenir la taille d'une fonte en pixels pour un MEMO | |
|
|
Auteur | Message |
---|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 17:45 | |
| Bonjour à tous Voici un petit bout de code qui permet de connaitre la taille d'une fonte en pixels quand elle a été fixé avec la commande 'font_size'. Ca m'a été bien utile pour calculer le nb de ligne visible dans un memo. - Code:
-
dim ret% dim i,f$
full_space 0
f$="dejavu sans mono" print_locate 150,0 : print f$ print_locate 130,12 : print "font_size pixels" for i=1 to 70 font_size_to_pixels(f$,i) print_locate 150,12*(i+1) : print i," ---------> ",ret% next i
END sub font_size_to_pixels(f$,t%) dim_local N,L repeat N=N+1 until object_exists(N)=0 list N : hide N : font_name N,f$ : font_size N,t% ' repeat L=L+1 until library$(L)="_" or library$(L)="user32" if library$(L)<>"user32" then library L,"user32" function "pixels","SendMessageA",L,"IIII","stdcall" ret%=pixels(handle(N),417,0,0)
' dll_on "user32" ' ret%=dll_call4("SendMessageA",handle(N),417,0,0) ' dll_off
delete N end_sub
Dernière édition par silverman le Mer 17 Fév 2016 - 9:28, édité 1 fois | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 21:38 | |
| Salut Silverman. C’est une Sub bien utile dans beaucoup de cas. Merci pour le partage. Du coup, j’ai arrangé un peu le code : la sortie dans un full_space, je n’aime pas trop. Cela n’enlève rien à l’utilité de ton code. - Code:
-
dim ret% dim i,f$
list 1 : width 1,200 : height 1,400 : font_bold 1
f$="dejavu sans mono" item_add 1,f$ item_add 1,"font_size pixels"
for i = 1 to 70 font_size_to_pixels(f$,i) item_add 1,str$(i) + " ----------------> " + str$(ret%) next i
END sub font_size_to_pixels(f$,t%) dim_local N,L repeat N = N + 1 until object_exists(N) = 0 list N : hide N : font_name N,f$ : font_size N,t% ' repeat L = L + 1 until library$(L) = "_" or library$(L) = "user32" if library$(L) <>"user32" then library L,"user32" function "pixels","SendMessageA",L,"IIII","stdcall" ret% = pixels(handle(N),417,0,0) delete N end_sub
| |
|
| |
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 21:47 | |
| Les fonctions TEXT_HEIGHT et TEXT_WIDTH le font déjà ? _________________ username : panoramic@jack-panoramic password : panoramic123 | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 21:56 | |
| Effectivement ! Parfois, on oublie ce dont on dispose. | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 22:33 | |
| @jack non, ça ne marche pas avec ces commandes, ça retourne toujours la même valeur. Voici le code du premier post modifié qui le montre bien: - Code:
-
dim ret%, ret2% dim i,f$
full_space 0
f$="dejavu sans mono" print_locate 150,0 : print f$ print_locate 130,12 : print "font_size pixels text_height" for i=1 to 70 font_size_to_pixels(f$,i) print_locate 150,12*(i+1) : print i," ---------> ",ret%," ---------> ",ret2% next i
END sub font_size_to_pixels(f$,t%) dim_local N,L repeat N=N+1 until object_exists(N)=0 list N : font_name N,f$ : font_size N,t% item_add N,"azerty" ret2%=text_height(item_read$(N,1),N) ' hide N ' repeat L=L+1 until library$(L)="_" or library$(L)="user32" if library$(L)<>"user32" then library L,"user32" function "pixels","SendMessageA",L,"IIII","stdcall" ret%=pixels(handle(N),417,0,0) ' dll_on "user32" ' ret%=dll_call4("SendMessageA",handle(N),417,0,0) ' dll_off wait 50 delete N end_sub
EDIT : EN FAIT, TEXT_HEIGHT NE FONCTIONNE PAS AVEC LES LIST
Dernière édition par silverman le Mer 17 Fév 2016 - 10:16, édité 2 fois | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 22:51 | |
| Pardon d'intervenir, mais je voulais essayer ces bouts de code et quelque chose m'échappe: je tombe en erreur sur des variables inconnues, ce qui me paraît normal: c'est quoi ces library$(l), et library L,x, et function, tout ça est inconnu de Panoramic_Editor ? | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 23:02 | |
| @Jl35 Mets-toi à jour mon vieux! Tu vis encore sous une version de la préhistoire. Nous sommes à la version V.0.9.27i5
Dernière édition par papydall le Mar 16 Fév 2016 - 23:19, édité 1 fois | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 23:07 | |
| Ce code donne la hauteur et la largeur de la fonte avec les fonctions TEXT_WIDTH / TEXT_HEIGHT de Panoramic - Code:
-
dim size,t$ t$ = "Salut" alpha 1 : font_name 1,"dejavu sans mono" list 10 : width 10,250 : height 10,400 : font_bold 10 item_add 10,"size .............height ...... width" for size = 1 to 50 font_size 1,size item_add 10, str$(size) + " ==========> " + str$(text_height(t$,1)) + string$(10," ") + str$(text_width(t$,1)) next size
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 23:22 | |
| Aïe ! j'ai loupé un (et même deux) épisode(s), je suis sous la 0.9.27i3, j'ai dû me perdre dans l'espace-temps sans m'en rendre compte... Merci papydall, heureusement que tu es là pour sauver les indigents. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 23:29 | |
| Contre les effets de l'âge, fais du sport (mais pas trop)! | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 23:32 | |
| | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mar 16 Fév 2016 - 23:50 | |
| Pardon Silverman. JL35 est allé trop loin (hors-sujet) et moi, j’ai suivi. C’est aussi de ma faute. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mer 17 Fév 2016 - 0:04 | |
| C'est la faute à papydall ! bon allez, moi aussi... moi surtout. Mais en fait je voulais savoir par curiosité ce qui ne va pas avec les fonctions TEXT_WIDTH et TEXT_HEIGHT qui pour moi fonctionnent très bien et que j'utilise couramment... enfin, quand j'en ai besoin. | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mer 17 Fév 2016 - 10:14 | |
| @papydall pardonné pour cette fois @jl35 - jl35 a écrit:
- library$(l), et library L,x,
il s'agit des nouvelles commandes, apparu depuis la version 0927i2. Tu peux les mettre en 'rem', à condition d'enlever les autres qui sont devant dll_on,ret%et dll_off. Grace au code que tu as posté je viens de me rendre compte que 'TEXT_HEIGHT' ne fonctionne pas avec les LIST. J'ai passé tellement de temps avec ça que je n'ai pas pensé à tester sur un alpha. Ca va m'etre bien utile. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mer 17 Fév 2016 - 10:57 | |
| Rendons à César... le code c'est papydall. C'est vrai que le TEXT_HEIGHT ne marche pas pour un LIST, ça c'est un bug. Je pars du principe que pour une police donnée et une taille donnée, la hauteur en pixels est la même quel que soit l'objet. Et donc si on veut connaître la hauteur de taille d'une police donnée, il suffit de faire (par exemple): - Code:
-
Tailfont("Arial",48) MESSAGE "Arial 48"+CHR$(10)+"H= "+CLIPBOARD_STRING_PASTE$+" pixels." TERMINATE
SUB Tailfont(fnt$,sz%) ' Hauteur en pixels de la police fnt$, taille sz% -> clipboard ALPHA 5000: HIDE 5000: FONT_NAME 5000,fnt$: FONT_SIZE 5000,sz% CLIPBOARD_STRING_COPY STR$(TEXT_HEIGHT("AByz",5000)): ' taille -> clip DELETE 5000 END_SUB Non ? | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO Mer 17 Fév 2016 - 12:14 | |
| Merci JL35 pour le César, je prends. Quant à ta dernière question - Citation :
- Non ?
C’es NOT Non, donc c’est Oui. | |
|
| |
Contenu sponsorisé
| Sujet: Re: obtenir la taille d'une fonte en pixels pour un MEMO | |
| |
|
| |
| obtenir la taille d'une fonte en pixels pour un MEMO | |
|