Canvas - это круто! - страница 14

 
Nikolai Semko:

Значит ты не услышал мой посыл

Но ты же должен округлять числа double для задания координат. Иначе никак.

 
Реter Konow:

Но ты же должен округлять числа double для задания координат. Иначе никак.

ничего не надо округлять

вот тебе скрипт, как наглядный пример.

Запусти сначала с параметрами по умолчанию (со сглаженными окружностями и координатами и размерами типа double)

а потом запусти с параметром typ = not_smoothed_circles (с несглаженными окружностями и координатами и размерами типа int - из класса CCanvas)

и поймешь - о чем я.

Лучше это делать на белом фоне, а не на черном

Файлы:
 
Nikolai Semko:

По мотивам Doom...

Интересно, почему картинка замораживается во время скроллинга чарта мышкой?


Жаль, что невозможно убить ресурс. Например, выключаешь индикатор с пламенем. И остается висеть объект с ресурсом. Объект то убить можно, ресурс - нет. По итогу элементарно сожрать всю память Терминала и тем самым незаметно вырубить советники.

 

Уже сто лет существует куча библиотек для 3D написанных на JаvaScript. Самый прямой и простой путь - переписать их оттуда сюда.

Не 100 лет, конечно, но несколько. 

 
fxsaber:

Интересно, почему картинка замораживается во время скроллинга чарта мышкой?

наверное это происходит из-за контроля в моем классе iCanvas события CHARTEVENT_CHART_CHANGE

в скрипте такого контроля нет и заморозки нет.

Файлы:
fire.mq5  9 kb
 
Nikolai Semko:

ничего не надо округлять

вот тебе скрипт, как наглядный пример.

Запусти сначала с параметрами по умолчанию (со сглаженными окружностями и координатами и размерами типа double)

а потом запусти с параметром typ = not_smoothed_circles (с несглаженными окружностями и координатами и размерами типа int - из класса CCanvas)

и поймешь - о чем я.

Лучше это делать на белом фоне, а не на черном

Да, смотриться очень хорошо. Качественные формы кругов. 

Но, ты же используешь класс CCanvas, а там координаты задаются в int. 

 
fxsaber:

Интересно, почему картинка замораживается во время скроллинга чарта мышкой?


Жаль, что невозможно убить ресурс. Например, выключаешь индикатор с пламенем. И остается висеть объект с ресурсом. Объект то убить можно, ресурс - нет. По итогу элементарно сожрать всю память Терминала и тем самым незаметно вырубить советники.

А ResourseFree() ?

 
fxsaber:

Жаль, что невозможно убить ресурс. Например, выключаешь индикатор с пламенем. И остается висеть объект с ресурсом. Объект то убить можно, ресурс - нет. По итогу элементарно сожрать всю память Терминала и тем самым незаметно вырубить советники.

Ну почему же?

Я в своем классе использую деструктор 

~iCanvas() { Destroy(); ChartRedraw();};

а Destroy:

void CCanvas::Destroy(void)
  {
//--- delete object
   if(m_objname!=NULL)
     {
      ObjectDelete(m_chart_id,m_objname);
      m_chart_id=0;
      m_objname =NULL;
      m_objtype =WRONG_VALUE;
     }
//--- deallocate array
   ArrayFree(m_pixels);
//--- free resource
   if(m_rcname!=NULL)
     {
      ResourceFree(m_rcname);
      m_rcname=NULL;
     }
//--- zeroize data
   m_width =0;
   m_height=0;
  }
 
Nikolai Semko:

наверное это происходит из-за контроля в моем классе iCanvas события CHARTEVENT_CHART_CHANGE

в скрипте такого контроля нет и заморозки нет.

Да, в скрипте без проблем.


Очень любопытно, как бы смотрелось

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

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2019.01.14 21:37

Осталось сделать выезжающую картинку дума с выключением газового крана.

Но на самом деле эффектно - это поджечь сами бары и линии объектов.


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


Для этого нужно немного работы: создать второй Canvas-буфер, как копию основного пламени, а затем применить фильтр по пиксельному расположению баров. Не должно быть сложно, на первый взгляд.

 
Nikolai Semko:

Ну почему же?

Я в своем классе использую деструктор 

а Destroy:

Ну тогда по какой-то причине он не сработал, т.к. у меня все осталось.

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