Canvas

 

Всем привет. Можно ли менять размер шрифта в канвасе? 


            CCanvObj *obj=new CCanvObj();

            if(obj==NULL)

               continue;

            if(!list_canvas.Add(obj))

               continue;

            if(obj.m_canvas.CreateBitmap(0,0,"Tp",Time[i],tp,90,20,COLOR_FORMAT_ARGB_NORMALIZE)) {

               obj.m_canvas.Rectangle(0,0,89,19,ColorToARGB(clrRed,999));

               obj.m_canvas.TextOut(4,1,"TP",ColorToARGB(clrWhite,999));// Можно ли поменять размер шрифта?

               obj.m_canvas.Update(true);

            }

 
Igor Kryuchkov:

Всем привет. Можно ли менять размер шрифта в канвасе? 


            CCanvObj *obj=new CCanvObj();

            if(obj==NULL)

               continue;

            if(!list_canvas.Add(obj))

               continue;

            if(obj.m_canvas.CreateBitmap(0,0,"Tp",Time[i],tp,90,20,COLOR_FORMAT_ARGB_NORMALIZE)) {

               obj.m_canvas.Rectangle(0,0,89,19,ColorToARGB(clrRed,999));

               obj.m_canvas.TextOut(4,1,"TP",ColorToARGB(clrWhite,999));// Можно ли поменять размер шрифта?

               obj.m_canvas.Update(true);

            }

Можно. Читайте справку по нему.
 
Artyom Trishkin:
Можно. Читайте справку по нему.

Читаю https://docs.mql4.com/ru/objects/textout

И не вижу где указывается размер шрифта
TextOut - Графические объекты - Справочник MQL4
TextOut - Графические объекты - Справочник MQL4
  • docs.mql4.com
Выводит текст в пользовательский массив (буфер) и возвращает результат успешности этой операции. Данный массив предназначается для создания графического ресурса. [in]  Значение из набора 9 предопределенных способов расположения точки привязки  выводимого текста. Задаётся комбинацией двух флагов – флага выравнивания текста по горизонтали и флага...
 
Igor Kryuchkov:

Читаю https://docs.mql4.com/ru/objects/textout

И не вижу где указывается размер шрифта
ОК. Документацию здесь на сайте. Стандартная библиотека.
 

Разобрался, если кому то нужно, примеры тут: 


https://www.mql5.com/ru/articles/3236

Создание пользовательских индикаторов с использованием класса CCanvas
Создание пользовательских индикаторов с использованием класса CCanvas
  • www.mql5.com
Итак, чтобы понять принципы построения пользовательской графики, будем двигаться от простого к сложному. Создадим простой круглый индикатор с рамкой, численным значением и описанием. На рис.1 представлена структура базовых элементов, из которых он будет состоять. Рамка. Своего рода очерченная окантовка. Фон. Пространство, в котором будут...
 
Igor Kryuchkov:

Читаю https://docs.mql4.com/ru/objects/textout

И не вижу где указывается размер шрифта

На одну строку выше взгляд поднять нужно )) 

TextSetFont - Графические объекты - Справочник MQL4
TextSetFont - Графические объекты - Справочник MQL4
  • docs.mql4.com
Устанавливает шрифт для вывода текста методами рисования и возвращает результат успешности этой операции. По умолчанию используется шрифт Arial и размер -120 (12 pt). [in]  Размер шрифта, который может задаваться положительными и отрицательными значениями. При положительных значениях размер выводимого текста не зависит от настроек размеров...
 
Ihor Herasko:

На одну строку выше взгляд поднять нужно )) 

Видел, но не понимал как применить. То есть по логике искал как туда прописать название обьекта, что бы обратится к нему. Вспомнил что канвас рисуется в своем пространстве и все решилось. Всем спасибо за ответы.

 
Igor Kryuchkov:

Видел, но не понимал как применить. То есть по логике искал как туда прописать название обьекта, что бы обратится к нему. Вспомнил что канвас рисуется в своем пространстве и все решилось. Всем спасибо за ответы.

Рекомендую использовать класс iCanvas.
Проще, нагляднее, короче код, и работает быстрее.

#property indicator_chart_window
#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164

int OnInit() {
   Text();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]){
   return(rates_total);
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {
   if (id==CHARTEVENT_CHART_CHANGE) Text();
  }
//+------------------------------------------------------------------+
 void Text() {
   Canvas.Erase(ColorToARGB(clrGreen,80));
   _Font("Century Gothic",_Height/25, 25,clrMagenta); // размер шрифта меняется в зависимости от высоты экрана
   _CommXY(100,100,"В синем небе звезды блещут,");
   _Comment("В синем море волны хлещут;");
   _Comment("Туча по небу идет,");
   _Comment("Бочка по морю плывет.");

   _Font("Arial",20,25,clrRed,0.7);        // 20 - размер, 25 - расстояние между строками, 0.7 - прозрачность
   _CommXY(100,300,"Словно горькая вдовица,");  // Позиция X и Y. Если целое число то значение в пикселях. Если double, то в процентах от ширины и высоты
   _Comment("Плачет, бьется в ней царица;");
   _Comment("И растет ребенок там");
   _Comment("Не по дням, а по часам.");
   _Font("Times New Roman",_Height/20,_Height/25,clrBlue);
   _CommXY(40.0,5.0,"День прошел, царица вопит...");  // Позиция X и Y в процентах от ширины и высоты (тип dounle)
                                                       
   _Comment("День прошел, царица вопит...");
   _Comment("А дитя волну торопит:");
   _Comment("«Ты, волна моя, волна!");
   _Comment("Ты гульлива и вольна;");
   Canvas.StepTextLine+=20;                            // увеличиваем шаг между строками на 20 пикселей
   Canvas.TextPosY+=20;                                // увеличиваем Y координату на 20 пикселей
   _Comment("Плещешь ты, куда захочешь,");
   Canvas.TextPosX+=20;                                // увеличиваем X координату на 20 пикселей
   _Comment("Ты морские камни точишь,");
   Canvas.TextPosX+=20;                                // увеличиваем X координату на 20 пикселей
   _Comment("Топишь берег ты земли,");
   Canvas.TextPosX+=20;                                // увеличиваем X координату на 20 пикселей
   _Comment("Подымаешь корабли —");
   _Comment("Не губи ты нашу душу:");
   _Comment("Выплесни ты нас на сушу!»");
   Canvas.Update();
 }


Файлы:
Причина обращения: