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

 
khorosh:

Зачем тебе это, ты же писал, что тебе вообще график не нужен.)

для красоты
 
Реter Konow:

Спасибо. Это ведь не перебор кадров .bmp сжатых командой #resource? ))) Точно нет. Это натуральный, дописанный за пару часов адаптер воспроизведения гиф-файла на MQL-канвасе, на основе портированного .gif-ридера. Я наверное, на идиота похож со стороны.)))

Юрий, спасибо за демо, но такую штуку каждый может сделать. Легко.

  1. Берем обычный гиф. Записываем на видео. 
  2. Из видео получаем все его кадры. 
  3. Сохраняем кадры в формате .bmp под номерами.

  4. Интегрируем через #resource кадры в скрипт.

  5. Делаем цикл по кадрам и выводим их последовательно на канвас в бесконечном цикле.

В итоге, получаем псевдо-гиф, который не имеет отношение к воспроизведению стандартного гиф-формата в MQL-программах.

//-----------------------------

Добавлено:

Скажу, что у меня тоже "псевдо-гиф", но технология гораздо сложнее. В ней есть авторское сжатие и механизм воспроизведения. А главное, "псевдо-гифы" привязаны к своим элементам и воспроизводятся из общего массива. Сжатие получается лучше, чем через директиву #resource, потому что неизменные цвета из кадра в кадр не записываются.


А что у вас там за видеоредактор, который анимированные гифы не может открывать? Фотошоп и тот открывает их и раскладывает кадры по слоям. Но есть и еще проще решение - онлайн сервис - загружаешь туда анимированную гифку, через минуту получаешь заархивированную папочку с отдельными кадрами.

 
А к чему спор - портированное решение или нет? Формат стандартный, значит способ работы с ним должен быть стандартным и между прочим разработанный одновременно с разработкой самого формата.
 
Файлы:
puh.ex5  29 kb
 
Yury Kulikov:

 

Приветствую.

Может кто случайно в курсе, почему нельзя нарисовать линию 2 пикселя? Что за дискриминация такая? )

void CCanvas::PolylineThick(const int &x[],const int &y[],const uint clr,const int size,const uint style,ENUM_LINE_END end_style)
  {
   if(size<=2)
     {
      if(size>0)
         PolylineWu(x,y,clr,style);
      return;
     }
...
 
Thick - это значит "толстая", а 2 пикселя - это совсем не толсто.
 
Dmitry Fedoseev:
Thick - это значит "толстая", а 2 пикселя - это совсем не толсто.
Ну толще же чем 1 пиксель )
 
Oleksii Chepurnyi:

Приветствую.

Может кто случайно в курсе, почему нельзя нарисовать линию 2 пикселя? Что за дискриминация такая? )

Да, и если заменить на if(size<2), то рисует, но коряво:


@Nikolai Semko, тут со сглаживанием траблы?

 
Andrey Khatimlianskii:

@Nikolai Semko, тут со сглаживанием траблы?

эти функции написаны ужасно плохо. Там черт голову словит. Ни нормальной сглаженности, ни нормальной работы со смешиванием цветов и прозрачности. Нужно просто смять их и выбросить в корзину, а новые написать.
Я уже писал об этом вот здесь.

Во всяком случае точно нужно штатную функцию PixelTransform заменить на эту:

https://www.mql5.com/ru/forum/1111/page2553#comment_13054823

Свою double (где все int входные параметры double) версию начал писать, но не дописал, отложил на полку. Не очень простая задача на кажущуюся простоту. Точнее написать не проблема, проблема написать очень качественно, чтобы быстрый алгоритм был. Моя главная проблема - это Перфекционизм.
Причина обращения: