Je pige pas les fontes / tailles de fontes

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Je pige pas les fontes / tailles de fontes

Message par drfloyd »

c'est DesktopScaledX() ou Y la solution ?

je vais voir ça......
Avatar de l’utilisateur
Naheulf
Messages : 193
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: Je pige pas les fontes / tailles de fontes

Message par Naheulf »

En fait dans PureBasic il y a une fonction toute faite qui peut donner la taille d’un texte en pixels. Pas besoin de se coder une procédure potentiellement foireuse pour le faire...

(Et là je ne parle pas de DesktopScaledX())
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Je pige pas les fontes / tailles de fontes

Message par Marc56 »

drfloyd a écrit :c'est DesktopScaledX() ou Y la solution ?

je vais voir ça......
PureBasic - Desktop

« La bibliothèque desktop permet d'obtenir des informations sur l'environnement de travail de l'utilisateur: Le bureau.
Ces informations sont les dimensions du bureau, sa résolution, la position du curseur de la souris, etc.
»
Ici

Depuis la v5.70 on a des fonctions liées au facteur de zoom
DesktopScaledX
DesktopScaledY
DesktopUnscaledX
DesktopUnscaledY
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je pige pas les fontes / tailles de fontes

Message par MLD »

Ollivier a dit :Moi, j'ai une méthode perso native et à coup sûr fiable. Allez je laisse chercher les as du réseau connecté avant d'apporter une réponse !

Comme je n'est pas de chat je donne ma langue a Ollivier :mrgreen: :oops: :oops:
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je pige pas les fontes / tailles de fontes

Message par MLD »

Après m'avoir torturé le neurone qu'il me reste, j’ai réfléchis a ceci: :roll:

Code : Tout sélectionner

Enumeration
  #Ma_fen
  #TXT
EndEnumeration

Global KDPIX.d = 100/DesktopScaledX(100):Global KDPIY.d = 100/DesktopScaledY(100)
Global Ldef.d =  1920 * KDPIX.d  :Global Hdef.d = 1080 * KDPIY.d 
Global definecrht.d = GetSystemMetrics_(#SM_CYSCREEN) * KDPIY 
Global definecrlarg.d = GetSystemMetrics_(#SM_CXSCREEN)* KDPIX 

Procedure X(lg.d)
  ProcedureReturn lg *(definecrlarg.d/Ldef.d)
EndProcedure

Procedure y(h.d)
  ProcedureReturn h *(definecrht.d /Hdef.d)
EndProcedure

FontID1 = LoadFont(30,"Tahoma",X(12))
OpenWindow( #Ma_fen,X(600),Y(200),X(400),Y(300),"Ma Fenêtre",#PB_Window_MinimizeGadget)
TextGadget(#TXT,X(2),Y(100),X(396),Y(25),"Enfin la résolution. C'est une révolution",#PB_Text_Center)
SetGadgetFont(#TXT,FontID1)
SetGadgetColor(#TXT,#PB_Gadget_BackColor,$1E69D2)
Repeat
  Event = WaitWindowEvent()
     
   
Until Event  = #PB_Event_CloseWindow
End
En principe ceci fonctionne avec n'importe quelle définition d'écran, et n'importe quel DPI.
Mais si vous pouviez faire quelques testes, et en indiquer les retours ou les améliorations possibles ce serait un plus.
Désolé mais il y a un petit peu d'API(S) 8O
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Je pige pas les fontes / tailles de fontes

Message par Zorro »

MLD a écrit :Désolé mais il y a un petit peu d'API(S) 8O
pourtant pas dur a virer les APIs pour ton exemple
:mrgreen: :)

Code : Tout sélectionner

Enumeration
  #Ma_fen
  #TXT
EndEnumeration


ExamineDesktops()
EcranX=DesktopWidth(0)
Ecrany =DesktopHeight(0)

Global KDPIX.d = 100/DesktopScaledX(100):Global KDPIY.d = 100/DesktopScaledY(100)
Global Ldef.d =  1920 * KDPIX.d  :Global Hdef.d = 1080 * KDPIY.d
Global definecrht.d =  EcranY * KDPIY
Global definecrlarg.d = Ecranx * KDPIX

Procedure X(lg.d)
  ProcedureReturn lg *(definecrlarg.d/Ldef.d)
EndProcedure

Procedure y(h.d)
  ProcedureReturn h *(definecrht.d /Hdef.d)
EndProcedure

FontID1 = LoadFont(30,"Tahoma",X(12))
OpenWindow( #Ma_fen,X(600),Y(200),X(400),Y(300),"Ma Fenêtre",#PB_Window_MinimizeGadget)
TextGadget(#TXT,X(2),Y(100),X(396),Y(25),"Enfin la résolution. C'est une révolution",#PB_Text_Center)
SetGadgetFont(#TXT,FontID1)
SetGadgetColor(#TXT,#PB_Gadget_BackColor,$1E69D2)
Repeat
  Event = WaitWindowEvent()
     
   
Until Event  = #PB_Event_CloseWindow
End
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je pige pas les fontes / tailles de fontes

Message par MLD »

@Zorro

Oui, l'on peu faire comme ceci. Merci
Perso j'aime bien les API(S), je trouve cela plus rapide, car les routines PB utilisent les API(S).(Donc pas de surcouche),mais le revers de la médaille:Pas multi OS.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Je pige pas les fontes / tailles de fontes

Message par Marc56 »

Inconvénient: pour une même fonction il existe souvent plusieurs API possibles.
Perso, je fais confiance à Fred pour avoir encapsulé la plus "compatible".
De plus, ça donne du code bien plus facile à (re)lire.
Certaines API nécessitent en plus un tas de paramètres dont seuls quelques-uns nous sont utiles

De toutes façons, si je ne me trompe, le code source sera converti en assembleur avant compilation, donc la vitesse finale sera la même si l'API utilisée est la même.

:P
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Je pige pas les fontes / tailles de fontes

Message par Ollivier »

Naheulf a écrit :En fait dans PureBasic il y a une fonction toute faite qui peut donner la taille d’un texte en pixels. Pas besoin de se coder une procédure potentiellement foireuse pour le faire...

(Et là je ne parle pas de DesktopScaledX())
Oui, c'est TextHeight("A") normalement. Ça donne la hauteur en pixels. En chargeant quasiment toutes les tailles d'une police, on fixe un seuil en pixels qu'on va chercher en testant chaque hauteur en pixels d'un "A" jusqu'à la taille correspondante.

Voilà.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je pige pas les fontes / tailles de fontes

Message par MLD »

Heu ????......... 8O 8O
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Je pige pas les fontes / tailles de fontes

Message par Zorro »

MLD a écrit :Heu ????......... 8O 8O
:lol: :lol: :lol: :lol: :lol: :lol:
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Je pige pas les fontes / tailles de fontes

Message par Micoute »

Oui c'est le procédé que j'emploie mais avec "W"
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Je pige pas les fontes / tailles de fontes

Message par falsam »

Micoute a écrit :Oui c'est le procédé que j'emploie mais avec "W"
?? :roll:


:mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Je pige pas les fontes / tailles de fontes

Message par djes »

Ce n'est pas "la faute" de PB, c'est un problème de Windows depuis les origines. Windows n'est pas naturellement un OS WYSIWYG comme l'est MacOS depuis l'intégration de NextStep. Il n'est pas "clairement" vectoriel, il mélange une part de bitmap pour l'affichage.
En plus la gestion bas niveau des polices dans Windows est un très vieux code que personne ne veut remettre à plat. (C'est l'objet d'un très bon papier en anglais par un programmeur de la boîte). Ce code est encapsulé à l'extrême. Pour être un peu plus juste, des portions modernes du code sont OK, mais la compatibilité ascendante impose de conserver certaines horreurs.

Un autre exemple d'héritage antédiluvien que Microsoft traîne comme un boulet : Word. Change d'imprimante. Toutes les marges sont redéfinies et ta belle mise en page est à refaire.

Alors, pour s'en sortir, soit on étudie dans le détail comment fonctionne tout ce b* (et c'est pas de la tarte !), ou alors, comme toi, avec une résolution en pixels à l'ancienne, on travaille avec du pixel et une police maison (en images) qui ne changera pas en fonction des paramètres système de l'utilisateur. En plus, pour un jeu, une police couleur est quand même plus jolie...
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Je pige pas les fontes / tailles de fontes

Message par MLD »

@djes
+10 :lol: :lol:
Répondre