Библиотеки: Easy Canvas - страница 19

 

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

//+------------------------------------------------------------------+
int MyCeil (const double x) {
   return (x-(int)x>0)?(int)x+1:(int)x;
}
//+------------------------------------------------------------------+
int MyRound(const double x) {
   return (int)(x+((x>0)?0.5:-0.5));
}
//+------------------------------------------------------------------+
int MyFloor(const double x) {
   return (x>0)?(int)x:((int)x-x>0)?(int)x-1:(int)x;
}
#define Ceil  MyCeil
#define Round  MyRound
#define Floor  MyFloor

...........

//+------------------------------------------------------------------+
#undef OnChartEvent
#define OnChartEvent SetOnChart(int x) {OnChart=true;  OnZ=false;}\
void MyChartEvent

#undef Ceil
#undef Round
#undef Floor
#undef _Font
 
hini #:

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

Данная библиотека создавалась 7 лет назад до моего 5-летнего образования в сфере software engineer.  Сейчас бы я совсем по другому написал эту библиотеку. Как минимум использовал бы пространство имен namespace. 
То, что Вы просите, я не могу сделать, так как это поломает много существующего кода моего и других людей, которые используют эту библиотеку.
Попробуйте у себя начать использовать namespace. 

 
Nikolai Semko #:
Данная библиотека создавалась 7 лет назад до моего 5-летнего образования в сфере software engineer.  Сейчас бы я совсем по другому написал эту библиотеку. Как минимум использовал бы пространство имен namespace. 
То, что Вы просите, я не могу сделать, так как это поломает много существующего кода моего и других людей, которые используют эту библиотеку.
Попробуйте у себя начать использовать namespace. 

100500 программистов, будут искренне перед сном Вас благодарить, если Вы сделаете качественную библиотеку Easy Canvas 2

Очень надо, а знаний не хватает, что бы самому сделать....
 
Vladimir Pastushak #:

100500 программистов, будут искренне перед сном Вас благодарить, если Вы сделаете качественную библиотеку Easy Canvas 2

Очень надо, а знаний не хватает, что бы самому сделать....

Владимир, Ренат сказал недавно, что будут внедрять Blend2D в терминале и в редакторе. 
А это значит, что эта библиотека уже станет рудиментом. Главное чтобы их намерение не превратилось в долгострой. 

Blend2D
Blend2D
  • blend2d.com
2D Vector Graphics Engine
 
Vladimir Pastushak #:

100500 программистов, будут искренне перед сном Вас благодарить, если Вы сделаете качественную библиотеку Easy Canvas 2

Очень надо, а знаний не хватает, что бы самому сделать....

А соберите-ка с этих 100500 программистов по $1 хотя бы, тогда Николай вероятно и сделает. А пока звучит примерно так: "Николай, ты поработай над новой биб-кой, а потом мы тебе скажем спасибо!"  ))

Качественная биб-ка для графики дорогого стоит. К примеру, написал один автор много статей про подобное дело. И где эта биб-ка? Работает через пень-колоду, поэтому не популярна...

 
Nikolai Semko #:

Это сделано для контроля множества подокон и множества экземпляров iCanvas. Ведь окна могут довавляться и удаляться в процессе работы индикатора.
Например, для этого индикатора это необходимо:

https://www.mql5.com/ru/code/25414

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

 
Vladimir Pastushak #:

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

Ну да. Так и должно быть. А в чем проблема?
Если надо менять Z-индекс, то нужно пересоздавать объекты в нужной последовательности
 
Nikolai Semko #:
Ну да. Так и должно быть. А в чем проблема?
Если надо менять Z-индекс, то нужно пересоздавать объекты в нужной последовательности

Благодарю, подумал об этом уже апосля...

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Canvas - это круто!

Nikolai Semko, 2026.06.02 15:32

обновил библиотеку iCanvas_CB.mqh (https://www.mql5.com/ru/code/22164)
по многочисленным просьбам добавлены две функции прямоугольников с загругленными сглаженными углами:

void              RoundRect(int x1,int y1,int x2, int y2, int r=5, int gage=2, uint clr=0xFFFF00FF, double a=0.5,bool shadow=true);
void              FillRoundRect(int x1,int y1,int x2, int y2, int r=5, uint clr=0xFFFF00FF, double a=0.707,bool shadow=true, double k=1.0);

в функциях предусмотрен вывод с тенью и прозрачностью.

с заливкой и тенями: 



с заливкой без теней:




без заливки с тенями:


без заливки и без теней