Caractéristiques du langage mql4, subtilités et techniques - page 16

 
J'espère que vous êtes amis)
 
Fast528:
J'espère que vous êtes amis)

"La guerre des Titans" n'aura pas lieu.

 
J'espère que la branche n'est pas morte. J'ai le problème suivant : j'ai un moniteur 4k, donc dans Windows ma police est agrandie (taille de 200%). Lorsque je crée des objets texte pour les indicateurs, la taille du texte est reprise des paramètres de Windows et est également mise à l'échelle. Par conséquent, si je fais quelque chose qui semble normal sur un système normal, sur mon ordinateur, le texte se chevauche, et si je fais quelque chose de normal pour moi, sur des paramètres normaux, le texte est trop petit. J'ai fait un réglage dans l'indicateur pour laisser l'utilisateur choisir s'il est mis à l'échelle ou non, mais je n'aime pas vraiment cela.

Existe-t-il un moyen de savoir directement à partir du programme quelle police est actuellement dans les fenêtres (agrandie ou non) et d'effectuer cette correction dans le code, sans toucher aux utilisateurs ? Certaines personnes peuvent avoir un moniteur 4k avec du texte à l'échelle et la plupart des indicateurs (où le texte est utilisé) du marché ont l'air laid et laid.
 
Olga Miakhovich:
J'espère que ce fil n'est pas mort. J'ai le problème suivant : j'ai un écran 4k, donc dans Windows j'ai une police agrandie (taille 200%). Lorsque vous créez des objets texte pour les indicateurs, la taille du texte est tirée des paramètres de Windows et est également mise à l'échelle. Par conséquent, si vous créez quelque chose qui semble normal sur un système normal, sur mon ordinateur le texte se chevauche, et si vous le rendez normal pour moi, alors sur des paramètres normaux le texte est trop petit. J'ai fait un réglage dans l'indicateur pour laisser l'utilisateur choisir s'il est mis à l'échelle ou non, mais je n'aime pas vraiment cela.

Existe-t-il un moyen de savoir directement à partir du programme quelle police est actuellement dans les fenêtres (agrandie ou non) et d'effectuer cette correction dans le code, sans toucher aux utilisateurs ? Certaines personnes peuvent avoir un écran 4k avec du texte à l'échelle et la plupart des indicateurs (où le texte est utilisé) du marché ont l'air laid.

Vous devriez peut-être vous mettre à travailler avec des ressources, ou avec CCanvas ?

Vous pouvez ensuite y régler la taille de la police en fonction des paramètres du système d'exploitation.

Lire à propos de TextOut(), TextSetFont()

Документация по MQL5: Графические объекты / TextSetFont
Документация по MQL5: Графические объекты / TextSetFont
  • www.mql5.com
Устанавливает шрифт для вывода текста методами рисования и возвращает результат успешности этой операции. По умолчанию используется шрифт Arial и размер -120 (12 pt). [in]  Размер шрифта, который может задаваться положительными и отрицательными значениями. При положительных значениях размер выводимого текста не зависит от настроек размеров...
 
Voilà, solution trouvée. Pour ceux qui se demandent ce que c'est : Utilisez la fonctionTerminalInfoInteger(TERMINAL_SCREEN_DPI) ; Avec une mise à l'échelle standard, ce sera 96. Si elle est 2 fois plus grande, l'échelle sera 2 fois plus grande.
 
Olga Miakhovich:
Ça y est, la solution est trouvée. Pour ceux qui se demandent ce que c'est : Utilisez la fonction TerminalInfoInteger(TERMINAL_SCREEN_DPI) ; Avec une mise à l'échelle standard, ce sera 96. Si elle est 2 fois plus grande, l'échelle sera 2 fois plus grande.

La solution est dans l'aide

Exemple de calcul du facteur d'échelle :

//--- nous créons un bouton avec une largeur de 1.5" sur l'écran
int screen_dpi =TerminalInfoInteger(TERMINAL_SCREEN_DPI) ;//--- obtenir le DPI du moniteur de l'utilisateur
int base_width =144 ;//largeur de base en points d'écran pour les moniteurs standard avec DPI=96
int width = (button_width *screen_dpi) / 96 ;//calculer la largeur du bouton pour le moniteur de l'utilisateur (avec DPI)
...

//--- calculer le facteur d'échelle en pourcentage
int scale_factor=(TerminalInfoInteger(TERMINAL_SCREEN_DPI)* 100) / 96 ;
//--- en utilisant le facteur d'échelle
width=(base_width * scale_factor) / 100;

 
Vladimir Pastushak:

La solution se trouve dans l'aide

Oui, mais ce n'est pas pour les polices.

Olga Miakhovich:
Ça y est, la solution est trouvée.

Vraiment ? La mise à l'échelle affecte-t-elle les ppp du moniteur ?

 
Caractéristiques de ArrayResize pour les tableaux multidimensionnels
void OnStart()
{
  int Array[][2];
  
  Print(ArrayResize(Array, 7)); // MQL5 - 7, MQL4 - 14
  Print(ArraySize(Array));      // 14
}
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Particularités du langage mql5, trucs et astuces

fxsaber, 2019.02.19 22:28

Vous voyez que la position a été ouverte et fermée au même prix. Mais leurs prix ne sont pas égaux lorsqu'ils sont comparés sans normalisation !

 
Eh bien, oui.