Ciao a tutti!
È possibile emettere testo in più righe in un oggetto OBJ_TEXT? Se no, perché non implementare questa funzione, domanda agli sviluppatori?
Per quanto mi ricordo, non si può, solo attraverso un ciclo.
Ciao a tutti!
È possibile emettere del testo in più righe in un oggetto OBJ_TEXT? Se no, perché non implementare questa funzione, domanda per gli sviluppatori?
È più facile usare Kanvas con la mia classe iCanvas:
#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164 void OnStart() { // Значения по умолчанию: // "Courier New" - начальный шрифт с размером 18 // Canvas.TextPosX=20; - начальная координата X // Canvas.TextPosY=100; - начальная координата Y // Canvas.TextColor=clrDarkOrchid; - цвет текста с прозрачностью 1.0 (полностью непрозрачный) // Canvas.StepTextLine = 20; - шаг между строками Canvas.Comm("В синем небе звезды блещут,"); Canvas.Comm("В синем море волны хлещут;"); Canvas.Comm("Туча по небу идет,"); Canvas.Comm("Бочка по морю плывет."); Canvas.TextPosition(100,500); // Позиция X и Y. Если целое число то значение в пикселях. Если double, то в процентах от ширины и высоты Canvas.CurentFont("Arial",25,30,clrRed,0.7); // 25 - размер, 30 - расстояние между строками, 0.7 - прозрачность Canvas.Comm("Словно горькая вдовица,"); Canvas.Comm("Плачет, бьется в ней царица;"); Canvas.Comm("И растет ребенок там"); Canvas.Comm("Не по дням, а по часам."); Canvas.TextPosition(50.0,20.0); // Позиция X и Y в процентах от ширины и высоты (тип dounle) Canvas.CurentFont("Times New Roman",40,30,clrBlue); // 40 - размер, 30 - расстояние между строками, прозрачность - 1.0 (по умолчанию Canvas.Comm("День прошел, царица вопит..."); Canvas.Comm("А дитя волну торопит:"); Canvas.Comm("«Ты, волна моя, волна!"); Canvas.Comm("Ты гульлива и вольна;"); Canvas.TextPosY+=20; // увеличиваем Y координату на 20 пикселей Canvas.Comm("Плещешь ты, куда захочешь,"); Canvas.TextPosX+=20; // увеличиваем X координату на 20 пикселей Canvas.Comm("Ты морские камни точишь,"); Canvas.TextPosX+=20; // увеличиваем X координату на 20 пикселей Canvas.Comm("Топишь берег ты земли,"); Canvas.TextPosX+=20; // увеличиваем X координату на 20 пикселей Canvas.Comm("Подымаешь корабли —"); Canvas.StepTextLine+=30; // увеличиваем шаг между строками на 30 пикселей Canvas.Comm("Не губи ты нашу душу:"); Canvas.Comm("Выплесни ты нас на сушу!»"); Canvas.Update(); Sleep(20000); }
Per visualizzare una cosa del genere usando oggetti, il codice sarebbe molto più grande.
Si può attaccare un riempitivo sul retro? In modo che la grafica non sia d'intralcio?
All'inizio, devi solo riempire lo sfondo con il colore e la trasparenza giusti:
Canvas.Erase(ColorToARGB(clrGreen,150)); // где 150- прозрачность, меняющаяся от 0 до 255. 0 - абсолютная прозрачность. 255-абсолютная непрозрачность
All'inizio devi solo riempire lo sfondo con il colore e la trasparenza giusti:
Grazie per la soluzione. Ma che dire del ridimensionamento? Per esempio, se inizio ad allargare o restringere il grafico in base al prezzo, il testo si sovrapporrà?
O questo testo sarà come un'etichetta?
Grazie per la soluzione. Ma che dire del ridimensionamento? Per esempio, se allargo o restringo il grafico per prezzo, il testo si sovrapporrà?
O questo testo sarà come un'etichetta?
A questo scopo, è necessario salvare le coordinate di inizio del testo non in pixel, ma in prezzo e tempo. E ogni volta l'evento CHARTEVENT_CHART_CHANGE dovrebbe essere ridisegnato usando le funzioni della classe iCanvas:
double Y(double Price); double X(datetime Time);
All'inizio devi solo riempire lo sfondo con il colore e la trasparenza giusti:
Grazie mille! Lo proverò uno di questi giorni.
Per fare questo, è necessario salvare le coordinate dell'inizio del testo non in pixel, ma in prezzo e tempo. E ogni volta, ridisegnateli all'evento CHARTEVENT_CHART_CHANGE, usando le funzioni della classe iCanvas:
Beh, sarebbe lo stesso che con un normale oggetto di testo. Comunque, userò la tua soluzione per altri scopi, grazie!
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Ciao a tutti!
È possibile emettere del testo in più righe in un oggetto OBJ_TEXT? Se no, perché non implementare questa funzione, domanda agli sviluppatori?