Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Тимур Машнин
Чтение книги онлайн.

Читать онлайн книгу Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 - Тимур Машнин страница 21

СКАЧАТЬ (0, -1, -1);

      }

      Этот код создает вертикальную линию с подписью цены закрытия предыдущего бара.

      С помощью функции ObjectSetInteger устанавливаются такие свойства графического объекта, как цвет, стиль, размер и др.

      С помощью функции ObjectSetString можно изменить имя объекта, при этом объект со старым именем будет удален и будет создан объект с новым именем, установить текст для таких объектов, как текст, кнопка, метка, поле ввода, событие, установить текст всплывающей подсказки для объекта, описание уровня для объектов, имеющих уровни, шрифт, имя BMP-файла для объекта «Графическая метка» и «Рисунок», символ для объекта «График».

      Функция TextSetFont позволяет установить тип шрифта текста, его размер, стиль и угол наклона для объектов, содержащих текст.

      Как уже было сказано, функция TextOut позволяет скомбинировать текст и изображение. Например, следующий код выводит текст в изображение, залитое одним цветом:

      uint ExtImg [10000];

      //+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

      //| Custom indicator initialization function |

      //+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

      int OnInit ()

      {

      ObjectCreate (0,«Image», OBJ_BITMAP_LABEL,0,0,0);

      ObjectSetString (0,«Image», OBJPROP_BMPFILE,»:: IMG»);

      ArrayFill (ExtImg,0,10000,0xffffff);

      TextOut («Text», 10,10,TA_LEFT|TA_TOP, ExtImg,100,100,0x000000,COLOR_FORMAT_XRGB_NOALPHA);

      ResourceCreate (»:: IMG», ExtImg,100,100,0,0,0,COLOR_FORMAT_XRGB_NOALPHA);

      ChartRedraw ();

      // – —

      return (INIT_SUCCEEDED);

      }

      Здесь ExtImg это пиксельный массив, представляющий изображение 100х100 пикселей.

      Функция ObjectCreate создает объект «Графическая метка», а функция ObjectSetString устанавливает для этого объекта файл изображения с именем::IMG. По поводу знака «::» справочник говорит следующее:

      Для использования своего ресурса в коде нужно перед именем ресурса добавлять специальный признак "::».

      Функция ArrayFill заполняет пиксельный массив пикселями белого цвета.

      Функция TextOut выводит в пиксельный массив слово «Text».

      Функция ResourceCreate создает из пиксельного массива ресурс с именем::IMG.

      В итоге на белом фоне отображается надпись «Text».

      Также можно вывести текст на готовое изображение:

      #resource "\\Images\\image.bmp»

      uint ExtImg [10000];

      //+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

      //| Custom indicator initialization function |

      //+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

      int OnInit ()

      {

      ObjectCreate (0,«Image», OBJ_BITMAP_LABEL,0,0,0);

      ObjectSetString (0,«Image», OBJPROP_BMPFILE,»:: IMG»);

      uint width=100;

      uint height=100;

      ResourceReadImage("::Images\\image.bmp», ExtImg, width, height);

      TextOut («Text», 10,10,TA_LEFT|TA_TOP, ExtImg,100,100,0xffffff, COLOR_FORMAT_XRGB_NOALPHA);

      ResourceCreate (»:: IMG», ExtImg,100,100,0,0,0,COLOR_FORMAT_XRGB_NOALPHA);

      ChartRedraw ();

      // – —

      return (INIT_SUCCEEDED);

      }

      Здесь функция ResourceReadImage считывает существующее изображение из папки Images окна Navigator редактора MQL5 в пиксельный массив::IMG, связанный с объектом «Графическая метка», а функция TextOut выводит в пиксельный массив слово «Text».

СКАЧАТЬ