La 5.40 nous permet de récupérer le DPI de l'écran et donc d'adapter la police en conséquence.
Dans le 1er exemple, vous ne verrez une différence après avoir cliqué sur le bouton que si votre DPI est différent de 96.
Précision : GetFactorDPI(ref.f=96) ; le ref ici qui est de 96 n'est pas une valeur par défaut mais correspond au DPI utilisé lors de la création du programme, mon DPI actuel est de 120, j'ai donc ajusté mon écran à 96 DPI (nécessite fermeture/réouverture de session) et ensuite créer le programme.
Si votre DPI est de 96, exécuter le deuxième code; le Ref est de 120 sur ce deuxième code, ce qui signifie donc que je l'ai créer avec un écran de 120 DPI au moment de la programmation.
Le Debug vous indiquera votre DPI ainsi que le coefficient multiplicateur.
Code : Tout sélectionner
; ref=96 correspond au DPI de l'écran au moment de la programmation
Procedure.f GetFactorDPI(ref.f=96)
Protected Factor.f
If StartVectorDrawing(WindowVectorOutput(0))
Factor = ref / VectorResolutionX()
StopVectorDrawing()
EndIf
Debug Factor
ProcedureReturn Factor
EndProcedure
If OpenWindow(#Window, 0, 0, 400, 200, "Ajustement de la taille de la police", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SizeFont.l = 12
LoadFont(1, "Arial", SizeFont)
SetGadgetFont(#PB_Default, FontID(1))
ButtonGadget(#Button,20,80,360,26, "Ajustement de la taille de la police de caractères")
Repeat
Event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case 0
ScaleFont.l = SizeFont * GetFactorDPI()
Debug ScaleFont
LoadFont(1, "Arial", ScaleFont)
SetGadgetFont(0, FontID(1))
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
Code : Tout sélectionner
; ref=120 correspond au DPI de l'écran au moment de la programmation
Procedure.f GetFactorDPI(ref.f=120)
Protected Factor.f
If StartVectorDrawing(WindowVectorOutput(0))
Factor = ref / VectorResolutionX()
StopVectorDrawing()
EndIf
Debug Factor
ProcedureReturn Factor
EndProcedure
If OpenWindow(#Window, 0, 0, 400, 200, "Ajustement de la taille de la police", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SizeFont.l = 10
LoadFont(1, "Arial", SizeFont)
SetGadgetFont(#PB_Default, FontID(1))
ButtonGadget(#Button,20,80,360,26, "Ajustement de la taille de la police de caractères")
Repeat
Event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case 0
ScaleFont.l = SizeFont * GetFactorDPI()
Debug ScaleFont
LoadFont(1, "Arial", ScaleFont)
SetGadgetFont(0, FontID(1))
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf