Je pige pas les fontes / tailles de fontes
Re: Je pige pas les fontes / tailles de fontes
c'est DesktopScaledX() ou Y la solution ?
je vais voir ça......
je vais voir ça......
Re: Je pige pas les fontes / tailles de fontes
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())
(Et là je ne parle pas de DesktopScaledX())
Re: Je pige pas les fontes / tailles de fontes
PureBasic - Desktopdrfloyd a écrit :c'est DesktopScaledX() ou Y la solution ?
je vais voir ça......
« 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
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

Comme je n'est pas de chat je donne ma langue a Ollivier



Re: Je pige pas les fontes / tailles de fontes
Après m'avoir torturé le neurone qu'il me reste, j’ai réfléchis a ceci:
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)

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
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)

Re: Je pige pas les fontes / tailles de fontes
pourtant pas dur a virer les APIs pour ton exempleMLD a écrit :Désolé mais il y a un petit peu d'API(S)


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
@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.
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
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.

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.

Re: Je pige pas les fontes / tailles de fontes
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.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())
Voilà.
Re: Je pige pas les fontes / tailles de fontes
Heu ????.........



Re: Je pige pas les fontes / tailles de fontes
MLD a écrit :Heu ????.........![]()






Re: Je pige pas les fontes / tailles de fontes
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 !
Un homme doit être poli, mais il doit aussi être libre !
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Je pige pas les fontes / tailles de fontes
??Micoute a écrit :Oui c'est le procédé que j'emploie mais avec "W"


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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Je pige pas les fontes / tailles de fontes
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...
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...