Пользовательские значки и прозрачность

 

Добрый день, друзья!


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

Но сейчас меня интересует решение ещё нескольких вопросов.


1. Возможно ли создание буферных значков из шрифтов Wingdings 2, 3 и других. По умолчанию мы работаем только с Wingdings

2. Можно ли создать собственный шрифт и скомпилировать его в продукт?

3. Возможно ли сделать прозрачность для буферных значков и текстовых объектов?


Спасибо, если поможете)

 
Vitaliy Kuznetsov:

2. Можно ли создать собственный шрифт и скомпилировать его в продукт?

3. Возможно ли сделать прозрачность для буферных значков и текстовых объектов?

2. да, в МТ5 можно тащить шрифт как ресурс. в МТ4 вроде нет

3. нет, но если сделать аналоги на основе канваса, тогда можно

 
Andrei Trukhanovich:

2. да, в МТ5 можно тащить шрифт как ресурс. в МТ4 вроде нет

3. нет, но если сделать аналоги на основе канваса, тогда можно

Спасибо за ответ. Кстати нестандартное применение собственного шрифта, это создание различных графических объектов под видом шрифта. Можно создавать различные панели (прямоугольники, квадраты, текстуры) и регулировать размеры полученной графики, изменяя размер шрифта)) адаптивный дизайн

По поводу аналогов по типу канваса, это я и жду, что кто-то может покажет или напишет пример.

Как впрочем может найдутся ещё решения поставленных вопросов на mql4

 
Vitaliy Kuznetsov:

По поводу аналогов по типу канваса, это я и жду, что кто-то может покажет или напишет пример.

Посмотрите у Николая Семко (Nikolai Semko). У него наибольшее количество работ по канвасу.

 
Vitaliy Kuznetsov:

Кстати нестандартное применение собственного шрифта, это создание различных графических объектов под видом шрифта.

Да, баловался таким еще много лет назад.

Подкупило то, что по сути векторная графика любой (насколько хватит терпения нарисовать) сложности быстро и эффективно отрисовывается терминалом без потери качества сглаживания от масштабирования.

 
Vitaliy Kuznetsov:

Добрый день, друзья!


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

Но сейчас меня интересует решение ещё нескольких вопросов.


1. Возможно ли создание буферных значков из шрифтов Wingdings 2, 3 и других. По умолчанию мы работаем только с Wingdings

2. Можно ли создать собственный шрифт и скомпилировать его в продукт?

3. Возможно ли сделать прозрачность для буферных значков и текстовых объектов?


Спасибо, если поможете)

свой шрифт(в моем случае  Abram Font4You.ttf) поместите в папку Files.
Этот шрифт будет уже находится внутри ex5 файла, как ресурс.

#include <Canvas\iCanvas.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);
  }
Файлы:
 
Спасибо за пример на мт5. Но ищу решение под мт4
 
Vitaliy Kuznetsov:
Спасибо за пример на мт5. Но ищу решение под мт4

Код кроссплатформенный. Должен работать в мт4 и в МТ5.

Библиотеку iCanvas для мт4 только здесь возьмите.

Easy Canvas (iCanvas)
Easy Canvas (iCanvas)
  • www.mql5.com
The library and iCanvas class simplify writing programs using Canvas.
 
Nikolai Semko:

Код кроссплатформенный. Должен работать в мт4 и в МТ5.

Библиотеку iCanvas для мт4 только здесь возьмите.

Спасибо. Прогресс намечается. (mt4):


Но внешний шрифт не захотел подгрузиться

 
Vitaliy Kuznetsov:

Спасибо. Прогресс намечается. (mt4):


Но внешний шрифт не захотел подгрузиться

Да, действительно, в 4-ке не загружаются шрифты в ресурс.
В 4-ке только около года назад починили чтение ресурсов.
Для меня загадка, почему программисты так упорно используют MT4.

Это из серии - купил себе комп и установил на него Win XP, потому что Win 10 отстой.

 
Nikolai Semko:

Win 10 отстой.

Так и есть. Медлительная, своенравная, глючная. Ее еще лет 10 допиливать нужно. 

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