Caratteristiche del linguaggio mql4, sottigliezze e tecniche - pagina 16

 
Spero che siate amici)
 
Fast528:
Spero che siate amici)

"La guerra dei titani" non si farà.

 
Spero che il ramo non sia morto. Ho il seguente problema: ho un monitor 4k, quindi in Windows il mio carattere è ingrandito (200%). Quando si fanno oggetti di testo per gli indicatori, la dimensione del testo viene presa dalle impostazioni di Windows e anche scalata, di conseguenza se faccio qualcosa che sembra normale su un sistema normale, sul mio computer il testo si sovrappone, e se faccio normale per me, su impostazioni normali il testo è troppo piccolo. Ho fatto un'impostazione nell'indicatore per permettere all'utente di scegliere se è scalato o no, ma non mi piace molto.

C'è un modo per sapere direttamente dal programma quale font è attualmente in windows (ingrandito o no) e fare questa correzione nel codice, senza toccare gli utenti? Solo alcune persone possono avere monitor 4k con testo scalato e la maggior parte degli indicatori (dove viene usato il testo) dal mercato sembra brutta e bruttina.
 
Olga Miakhovich:
Spero che il thread non sia morto. Ho il seguente problema: ho un monitor 4k, quindi in Windows ho un carattere ingrandito (dimensione 200%). Quando fai oggetti di testo per gli indicatori, la dimensione del testo viene presa dalle impostazioni di Windows e viene anche scalata, di conseguenza, se fai qualcosa che sembra normale su un sistema normale, sul mio computer il testo si sovrappone, e se lo fai normale per me, allora su impostazioni normali il testo è troppo piccolo. Ho fatto un'impostazione nell'indicatore per permettere all'utente di scegliere se è scalato o no, ma non mi piace molto.

C'è un modo per sapere direttamente dal programma quale font è attualmente in windows (ingrandito o no) e fare questa correzione nel codice, senza toccare gli utenti? Alcune persone possono avere monitor 4k con testo scalato e la maggior parte degli indicatori (dove il testo è usato) dal mercato sembra brutto.

Forse dovresti passare a lavorare con le risorse, o con CCanvas?

Poi si può impostare la dimensione del carattere in base alle impostazioni del sistema operativo.

Leggere TextOut(), TextSetFont()

Документация по MQL5: Графические объекты / TextSetFont
Документация по MQL5: Графические объекты / TextSetFont
  • www.mql5.com
Устанавливает шрифт для вывода текста методами рисования и возвращает результат успешности этой операции. По умолчанию используется шрифт Arial и размер -120 (12 pt). [in]  Размер шрифта, который может задаваться положительными и отрицательными значениями. При положительных значениях размер выводимого текста не зависит от настроек размеров...
 
Ecco, soluzione trovata. Per coloro che si stanno chiedendo cosa sia: usate la funzioneTerminalInfoInteger(TERMINAL_SCREEN_DPI); con il ridimensionamento standard sarà 96. Se è 2 volte più grande, allora il ridimensionamento sarà 2 volte di conseguenza.
 
Olga Miakhovich:
Ecco, la soluzione è trovata. Per quelli che si chiedono cos'è: usate la funzione TerminalInfoInteger(TERMINAL_SCREEN_DPI); con il ridimensionamento standard sarà 96. Se è 2 volte più grande, allora il ridimensionamento sarà 2 volte di conseguenza.

La soluzione è nell'aiuto

Esempio di calcolo del fattore di scala:

//--- creiamo un pulsante con larghezza 1.5" sullo schermo
int screen_dpi =TerminalInfoInteger(TERMINAL_SCREEN_DPI);//--- ottenere DPI del monitor utente
int base_width =144;//larghezza di base in punti schermo per monitor standard con DPI=96
int width = (button_width *screen_dpi) / 96;//calcolare la larghezza del pulsante per il monitor utente (con DPI)
...

//--- calcola il fattore di scala in percentuali
int scale_factor=(TerminalInfoInteger(TERMINAL_SCREEN_DPI)* 100) / 96;
//--- utilizzando il fattore di scala
width=(base_width * scale_factor) / 100;

 
Vladimir Pastushak:

La soluzione è nell'aiuto

Sì, ma non è per i caratteri.

Olga Miakhovich:
Ecco, la soluzione è trovata.

davvero? il ridimensionamento influisce sui dpi del monitor?

 
Caratteristiche di ArrayResize per array multidimensionali
void OnStart()
{
  int Array[][2];
  
  Print(ArrayResize(Array, 7)); // MQL5 - 7, MQL4 - 14
  Print(ArraySize(Array));      // 14
}
 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Peculiarità del linguaggio mql5, consigli e trucchi

fxsaber, 2019.02.19 22:28

Vedi la posizione aperta e chiusa allo stesso prezzo. Ma i loro prezzi non sono uguali se confrontati senza normalizzazione!

 
Beh, sì.