Прозрачный текст - страница 2

 
forex2030 #:

Пробовал так, получается на заднем плане, но прозрачности нет.

Тогда канвас
 
Vitaly Muzichenko #:

Без канваса прозрачность не сделать. Никого не слушайте. А вообще, если есть возможность избежать прозрачность - избегайте. Меньше будет ненужного кода, который нужно обслуживать. 

Тоже верно.
Выбросить из головы за ненадобностью
 

Кто разбирается в канвасе, поправьте пожалуйста на текстовой вызов 

   if(!C.CreateBitmapLabel(0,0,"_Canvas",100,100,600,400,COLOR_FORMAT_ARGB_NORMALIZE))
 
Renat Akhtyamov #:
Это от не знания  mql, сразу в крайности - канвас, питон и пр...

В торговле графика нужна только текстовая и тренды. Эмкуэля за глаза

Renat Akhtyamov #:
Тогда канвас

да, похоже вы не знаете "Эмкуэля".

подучились бы сначала)

 
Taras Slobodyanik #:

да, похоже вы не знаете "Эмкуэля".

подучились бы сначала)

Я часто смотрю с какой стороны ветер дует.
Поэтому Ваша оценка мне похфиг, на провокации не поддаюсь.
 
Renat Akhtyamov #:
Я часто смотрю с какой стороны ветер дует.
Поэтому Ваша оценка мне похфиг, на провокации не поддаюсь.

да я тоже смотрю - посоветовать что-то невозможное в МТ это для вас нормально, а потом конечно ветер меняется)

 
forex2030 #:

Таким образом цвета вообще не будет.
Я имею ввиду текст как фон на заднем плане графика.

Если на заднем плане, то прозрачность не нужна.
Прозрачность нужна, если перед графиком.
В этом случае можете воспользоваться моей библой, с которой проще работать, чем с объектами. 
Вот пример простого скрипта:

#include <Canvas\iCanvas_CB.mqh> //https://www.mql5.com/ru/code/22164
#resource "\\Files\\Abram Font4You.ttf"
string myFont="::Files\\Abram Font4You.ttf";
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
// Значения по умолчанию:
// "Courier New"                   - начальный шрифт с размером 18 
// Canvas.TextPosX=20;             - начальная координата X
// Canvas.TextPosY=100;            - начальная координата Y
// Canvas.TextColor=clrDarkOrchid; - цвет текста с прозрачностью 1.0 (полностью непрозрачный)
// Canvas.StepTextLine = 20;       - шаг между строками
   ulong t = GetMicrosecondCount();
   Canvas.Erase(0x00FFFFFF);                           // 0x00FFFFFF это важно. Не 0. Иначе шрифты будут не четкими на небелом фоне
   Canvas.Comm("В синем небе звезды блещут,");
   Canvas.Comm("В синем море волны хлещут;");
   Canvas.Comm("Туча по небу идет,");
   Canvas.Comm("Бочка по морю плывет.");

   Canvas.TextPosition(100,500);                       // Позиция X и Y. Если целое число то значение в пикселях. Если double, то в процентах от ширины и высоты
   Canvas.CurentFont("Arial",25,30,clrRed,0.3);         // 25 - размер, 30 - расстояние между строками, 0.3 - прозрачность
   Canvas.Comm("Словно горькая вдовица,");
   Canvas.Comm("Плачет, бьется в ней царица;");
   Canvas.Comm("И растет ребенок там");
   Canvas.Comm("Не по дням, а по часам.");

   Canvas.TextPosition(50.0,20.0);                     // Позиция X и Y в процентах от ширины и высоты (тип dounle)

   Canvas.CurentFont(myFont,50,30,0xFFFF00FF,0.9);     // 50 - размер, 30 - расстояние между строками, прозрачность - 0.9
   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();
   t=GetMicrosecondCount()-t;
   Print("Время формирования и вывода текста - " +DoubleToString(t/1000.0, 2) + " миллисекунд");
   Sleep(20000);
  }
//+------------------------------------------------------------------+


Текст можно привязывать к барам ( функции Canvas.X(double bar) ), цене (Canvas.Y(double Price)) и времени ( Canvas.X(datetime Time)), к координатам окна в пикселях(TextPosition(int x,int y)) или процентах(TextPosition(double x,double y)). 
Лучше вынести весь вывод текста или графики в отдельную функцию и перерисовывать каждый раз при наступлении нужного события.

ЗЫ есть версия MT4. Код тот же самый будет.

Файлы:
 
Nikolai Semko #:

Если на заднем плане, то прозрачность не нужна.
Прозрачность нужна, если перед графиком.
В этом случае можете воспользоваться моей библой, с которой проще работать, чем с объектами. 
Вот пример простого скрипта:


Текст можно привязывать к барам ( функции Canvas.X(double bar) ), цене (Canvas.Y(double Price)) и времени ( Canvas.X(datetime Time)), к координатам окна в пикселях(TextPosition(int x,int y)) или процентах(TextPosition(double x,double y)). 
Лучше вынести весь вывод текста или графики в отдельную функцию и перерисовывать каждый раз при наступлении нужного события.

ЗЫ есть версия MT4. Код тот же самый будет.

А где полупрозрачная подложка под текст, чтобы было читабельно? :)

 
Vitaly Muzichenko #:

А где полупрозрачная подложка под текст, чтобы было читабельно? :)

Так делов-то - одна строка кода после Canvas.Erase - нарисовать прямоугольник с нужным цвет и прозрачностью.
например так:

Canvas.FillRectangle(100,100,_Width-100,_Height-100,ColorToARGB(~W.Color,128));


 
Nikolai Semko #:

Так делов-то - одна строка кода после Canvas.Erase - нарисовать прямоугольник с нужным цвет и прозрачностью.
например так:


ну и осталось только написать черным, чтобы окончательно убедиться в том, что прозрачность не нужна

Причина обращения: