Merkmale der Sprache mql4, Feinheiten und Techniken - Seite 16

 
Ich hoffe, ihr seid Freunde)
 
Fast528:
Ich hoffe, ihr seid Freunde)

Der "Krieg der Titanen" wird nicht stattfinden.

 
Ich hoffe, der Ast ist nicht tot. Ich habe folgendes Problem: Ich habe einen 4k-Monitor, daher ist meine Schrift unter Windows vergrößert (200%). Wenn ich Textobjekte für Indikatoren erstelle, wird die Textgröße von den Windows-Einstellungen übernommen und auch skaliert. Wenn ich also etwas mache, das auf einem normalen System normal aussieht, überschneidet sich der Text auf meinem Computer, und wenn ich normal für mich mache, ist der Text auf normalen Einstellungen zu klein. Ich habe den Indikator so eingestellt, dass der Benutzer wählen kann, ob er skaliert werden soll oder nicht, aber das gefällt mir nicht wirklich.

Gibt es eine Möglichkeit, direkt aus dem Programm heraus zu wissen, welche Schriftart gerade im Fenster ist (vergrößert oder nicht) und diese Korrektur im Code vorzunehmen, ohne die Benutzer zu berühren? Nur einige Leute können 4k-Monitor mit skalierten Text und die meisten Indikatoren (wo Text verwendet wird) vom Markt sieht hässlich und hässlich.
 
Olga Miakhovich:
Ich hoffe, der Thread ist nicht tot. Ich habe folgendes Problem: Ich habe einen 4k-Monitor, daher habe ich in Windows eine vergrößerte Schrift (Größe 200%). Wenn Sie Textobjekte für Indikatoren erstellen, wird die Textgröße von den Windows-Einstellungen übernommen und auch skaliert. Wenn Sie also etwas erstellen, das auf einem normalen System normal aussieht, überschneidet sich der Text auf meinem Computer, und wenn Sie ihn für mich normal machen, ist der Text auf normalen Einstellungen zu klein. Ich habe den Indikator so eingestellt, dass der Benutzer wählen kann, ob er skaliert werden soll oder nicht, aber das gefällt mir nicht wirklich.

Gibt es eine Möglichkeit, direkt aus dem Programm heraus zu wissen, welche Schriftart gerade im Fenster ist (vergrößert oder nicht) und diese Korrektur im Code vorzunehmen, ohne die Benutzer zu berühren? Einige Leute haben vielleicht einen 4k-Monitor mit skaliertem Text und die meisten Indikatoren (wo Text verwendet wird) vom Markt sehen hässlich aus.

Vielleicht sollten Sie auf die Arbeit mit Ressourcen oder CCanvas umsteigen?

Dort können Sie dann die Schriftgröße entsprechend den Einstellungen des Betriebssystems festlegen.

Lesen Sie über TextOut(), TextSetFont()

Документация по MQL5: Графические объекты / TextSetFont
Документация по MQL5: Графические объекты / TextSetFont
  • www.mql5.com
Устанавливает шрифт для вывода текста методами рисования и возвращает результат успешности этой операции. По умолчанию используется шрифт Arial и размер -120 (12 pt). [in]  Размер шрифта, который может задаваться положительными и отрицательными значениями. При положительных значениях размер выводимого текста не зависит от настроек размеров...
 
Das war's, Lösung gefunden. Für diejenigen, die sich fragen, was das ist: Benutzen Sie die FunktionTerminalInfoInteger(TERMINAL_SCREEN_DPI); mit der Standardskalierung wird es 96 sein. Wenn 2 mal größer, dann wird die Skalierung entsprechend 2 mal sein.
 
Olga Miakhovich:
Das war's, die Lösung ist gefunden. Für diejenigen, die sich fragen, was das ist: Verwenden Sie die Funktion TerminalInfoInteger(TERMINAL_SCREEN_DPI); mit Standardskalierung ist es 96. Wenn 2 mal größer, dann wird die Skalierung entsprechend 2 mal sein.

Die Lösung finden Sie in der Hilfe

Beispiel für die Berechnung des Skalierungsfaktors:

//--- wir erstellen eine Schaltfläche mit der Breite 1.5" auf dem Bildschirm
int screen_dpi =TerminalInfoInteger(TERMINAL_SCREEN_DPI);//--- DPI des Benutzermonitors ermitteln
int base_width =144;//Basisbreite in Bildschirmpunkten für Standardmonitore mit DPI=96
int width = (button_width *screen_dpi) / 96;//Berechnung der Tastenbreite für den Benutzermonitor (mit DPI)
...

//--- Berechnung des Skalierungsfaktors in Prozenten
int scale_factor=(TerminalInfoInteger(TERMINAL_SCREEN_DPI)* 100) / 96;
//--- mit Skalierungsfaktor
width=(base_width * scale_factor) / 100;

 
Vladimir Pastushak:

Die Lösung finden Sie in der Hilfe

Ja, aber es ist nicht für Schriftarten.

Olga Miakhovich:
Das war's, die Lösung ist gefunden.

Wirklich? Beeinflusst die Skalierung die dpi-Werte des Monitors?

 
Eigenschaften von ArrayResize für mehrdimensionale Arrays
void OnStart()
{
  int Array[][2];
  
  Print(ArrayResize(Array, 7)); // MQL5 - 7, MQL4 - 14
  Print(ArraySize(Array));      // 14
}
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Eigenheiten der Sprache mql5, Tipps und Tricks

fxsaber, 2019.02.19 22:28

Sie sehen, dass die Position zum gleichen Preis eröffnet und geschlossen wurde. Aber ihre Preise sind nicht gleich, wenn man sie ohne Normalisierung vergleicht!

 
Nun, ja.
Grund der Beschwerde: