OBJ_TEXT 개체에서 여러 줄에 텍스트를 표시할 수 있습니까?

 

모두 제일 좋다!

OBJ_TEXT 개체에서 여러 줄에 텍스트를 표시할 수 있습니까? 그렇지 않다면 이 기능을 구현하지 않는 이유는 무엇입니까? 개발자에게 질문하십시오.

 
Farkhat Guzairov :

모두 제일 좋다!

OBJ_TEXT 개체에서 여러 줄에 텍스트를 표시할 수 있습니까? 그렇지 않다면 왜 이 기능을 구현하지 않습니까? 개발자에게 질문하십시오.

내가 기억하는 한 사이클을 통해서만 불가능합니다.

 
Evgeny Belyaev :

내가 기억하는 한 사이클을 통해서만 불가능합니다.

주기에 관해서는 이것이 바로 내가 피하고 싶은 것입니다. 예를 들어 주석 에서 작동하는 것과 같이 처음에 이것이 수행되지 않은 이유는 무엇입니까?

 
Farkhat Guzairov :

모두 제일 좋다!

OBJ_TEXT 개체에서 여러 줄에 텍스트를 표시할 수 있습니까? 그렇지 않다면 이 기능을 구현하지 않는 이유는 무엇입니까? 개발자에게 질문하십시오.

iCanvas 클래스와 함께 Canvas를 사용하는 것이 더 쉽습니다.

 #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 );  
  }


개체를 사용하여 이것을 화면에 표시하려면 코드가 훨씬 커집니다.

 
Nikolai Semko :

iCanvas 클래스와 함께 Canvas를 사용하는 것이 더 쉽습니다.



개체를 사용하여 이것을 화면에 표시하려면 코드가 훨씬 커집니다.

이거 뒷부분에 끼워도 되나요? 일정이 방해되지 않도록?
 
Leon :
이거 뒷부분에 끼워도 되나요? 일정이 방해되지 않도록?

처음에는 배경을 원하는 색상과 원하는 투명도로 채우기만 하면 됩니다.

Canvas.Erase( ColorToARGB ( clrGreen , 150 )); // где 150- прозрачность, меняющаяся от 0 до 255.  0 - абсолютная прозрачность. 255-абсолютная непрозрачность
 
Nikolai Semko :

처음에는 배경을 원하는 색상과 원하는 투명도로 채우기만 하면 됩니다.

솔루션에 감사드립니다. 그러나 스케일링은 어떻습니까? 예를 들어 차트를 가격별로 확장하거나 축소하기 시작하면 텍스트가 서로 겹칠까요?

아니면 이 텍스트가 레이블과 같습니까?

 
"\n"을 지원하는 텍스트 개체를 갖는 것이 이상적일 것입니다. 그러면 그래프 확장성 이 있는 텍스트 문제는 그렇게 심각하지 않습니다.
 
Farkhat Guzairov :

솔루션에 감사드립니다. 그러나 스케일링은 어떻습니까? 예를 들어 차트를 가격별로 확장하거나 축소하기 시작하면 텍스트가 서로 겹칠까요?

아니면 이 텍스트가 레이블과 같습니까?

이렇게 하려면 텍스트 시작 부분의 좌표를 픽셀 단위가 아니라 가격과 시간 단위로 저장해야 합니다. 그리고 매번 iCanvas 클래스의 기능을 통해 CHARTEVENT_CHART_CHANGE 이벤트에서 다시 그립니다.

 double Y( double Price);
double X( datetime Time );
 
Nikolai Semko :

처음에는 배경을 원하는 색상과 원하는 투명도로 채우기만 하면 됩니다.

정말 감사합니다! 나는 요즘 중 하나를 시도합니다.

 
Nikolai Semko :

이렇게 하려면 텍스트 시작 부분의 좌표를 픽셀 단위가 아니라 가격과 시간 단위로 저장해야 합니다. 그리고 매번 iCanvas 클래스의 기능을 통해 CHARTEVENT_CHART_CHANGE 이벤트에서 다시 그립니다.

글쎄, 그것은 일반 텍스트 개체와 동일합니다. 어쨌든 다른 용도로 솔루션을 사용하겠습니다. 감사합니다!