Page 3 sur 4

Re: Je pige pas les fontes / tailles de fontes

Publié : sam. 05/oct./2019 11:11
par drfloyd
c'est DesktopScaledX() ou Y la solution ?

je vais voir ça......

Re: Je pige pas les fontes / tailles de fontes

Publié : sam. 05/oct./2019 13:40
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())

Re: Je pige pas les fontes / tailles de fontes

Publié : sam. 05/oct./2019 14:16
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

Re: Je pige pas les fontes / tailles de fontes

Publié : sam. 05/oct./2019 14:19
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:

Re: Je pige pas les fontes / tailles de fontes

Publié : sam. 05/oct./2019 14:50
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

Re: Je pige pas les fontes / tailles de fontes

Publié : sam. 05/oct./2019 15:50
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

Re: Je pige pas les fontes / tailles de fontes

Publié : sam. 05/oct./2019 16:30
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.

Re: Je pige pas les fontes / tailles de fontes

Publié : sam. 05/oct./2019 17:11
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

Re: Je pige pas les fontes / tailles de fontes

Publié : dim. 06/oct./2019 23:43
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à.

Re: Je pige pas les fontes / tailles de fontes

Publié : lun. 07/oct./2019 8:19
par MLD
Heu ????......... 8O 8O

Re: Je pige pas les fontes / tailles de fontes

Publié : lun. 07/oct./2019 8:55
par Zorro
MLD a écrit :Heu ????......... 8O 8O
:lol: :lol: :lol: :lol: :lol: :lol:

Re: Je pige pas les fontes / tailles de fontes

Publié : lun. 07/oct./2019 9:50
par Micoute
Oui c'est le procédé que j'emploie mais avec "W"

Re: Je pige pas les fontes / tailles de fontes

Publié : mar. 08/oct./2019 9:50
par falsam
Micoute a écrit :Oui c'est le procédé que j'emploie mais avec "W"
?? :roll:


:mrgreen:

Re: Je pige pas les fontes / tailles de fontes

Publié : mer. 09/oct./2019 8:00
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...

Re: Je pige pas les fontes / tailles de fontes

Publié : mer. 09/oct./2019 9:29
par MLD
@djes
+10 :lol: :lol: