OBJ_TEXT nesnesinde metni birden çok satırda görüntülemek mümkün mü?

 

Herşey gönlünce olsun!

OBJ_TEXT nesnesinde metni birden çok satırda görüntülemek mümkün mü? Değilse, neden bu özelliği uygulamıyorsunuz, geliştiricilere soru?

 
Farkhat Guzairov :

Herşey gönlünce olsun!

OBJ_TEXT nesnesinde metni birden çok satırda görüntülemek mümkün mü? Değilse, neden bu özelliği uygulamıyorsunuz, geliştiricilere soru?

Hatırladığım kadarıyla imkansız, sadece bir döngü ile.

 
Evgeny Belyaev :

Hatırladığım kadarıyla imkansız, sadece bir döngü ile.

Döngü hakkında, tam olarak kaçınmak istediğim şey bu. Bu neden başlangıçta yapılamadı, örneğin Yorum'da çalışıyor.

 
Farkhat Guzairov :

Herşey gönlünce olsun!

OBJ_TEXT nesnesinde metni birden çok satırda görüntülemek mümkün mü? Değilse, neden bu özelliği uygulamıyorsunuz, geliştiricilere soru?

iCanvas sınıfımla Canvas'ı kullanmak daha kolay:

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


Bunu nesneleri kullanarak ekranda görüntülemek için kod çok daha büyük olacaktır.

 
Nikolai Semko :

iCanvas sınıfımla Canvas'ı kullanmak daha kolay:



Bunu nesneleri kullanarak ekranda görüntülemek için kod çok daha büyük olacaktır.

Bu arkadan vidalanabilir mi? Böylece program karışmaz mı?
 
Leon :
Bu arkadan vidalanabilir mi? Böylece program karışmaz mı?

Başlangıçta, arka planı istenen renk ve istenen şeffaflıkla doldurmanız yeterlidir:

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

Başlangıçta, arka planı istenen renk ve istenen şeffaflıkla doldurmanız yeterlidir:

Çözüm için teşekkürler. Peki ya ölçeklendirme? Örneğin, grafiği fiyata göre genişletmeye veya daraltmaya başlarsam metin birbiriyle örtüşür mü?

Yoksa bu metin bir etiket gibi mi olacak?

 
"\n" desteği olan bir metin nesnesine sahip olmak ideal olurdu, o zaman grafik ölçeklenebilirliği olan metin sorunu o kadar ciddi değildi.
 
Farkhat Guzairov :

Çözüm için teşekkürler. Peki ya ölçeklendirme? Örneğin, grafiği fiyata göre genişletmeye veya daraltmaya başlarsam metin birbiriyle örtüşür mü?

Yoksa bu metin bir etiket gibi mi olacak?

Bunu yapmak için, metnin başlangıcının koordinatlarını piksel olarak değil, fiyat ve zaman olarak kaydetmeniz gerekir. Ve her seferinde onları CHARTEVENT_CHART_CHANGE olayında iCanvas sınıfının işlevleri aracılığıyla yeniden çizin:

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

Başlangıçta, arka planı istenen renk ve istenen şeffaflıkla doldurmanız yeterlidir:

Çok teşekkürler! Bu günlerden birini deneyeceğim.

 
Nikolai Semko :

Bunu yapmak için, metnin başlangıcının koordinatlarını piksel olarak değil, fiyat ve zaman olarak kaydetmeniz gerekir. Ve her seferinde onları CHARTEVENT_CHART_CHANGE olayında iCanvas sınıfının işlevleri aracılığıyla yeniden çizin:

Normal bir metin nesnesiyle aynı olacaktır. Her durumda, çözümünüzü başka amaçlar için kullanacağım, teşekkürler!

Neden: