Функция разложения цвета на оттенки. - страница 10

 
Реter Konow:

Николай, это похоже на детский сад. Заявление "в 4 раза быстрее" не состоятельно, потому что не доказано. 


  1. Закомментируй строку у себя, в твоей версии моего решения на МТ5, и ты увидешь разницу.

 Эта строка почему то влияет на рисование всего прямоугольника. Но это не мой глюк. Проверь.

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


И отключи ненужное мелькание цифр. Убери все лишнее. Пусть один раз выводится простой прямоугольник с градиентом одного исходного цвета. Без лишних примочек.

Петр, я написал "в 4 раза быстрее" после того когда предоставил код с доказательствами. Не понимаю, что еще нужно.

Все отключил - глюк продолжается. Этот глюк я увидел еще до того, как сделал этот обвес. Если вставлять мой градиент, то этого глюка нет даже с текствовым обвесом. Это уже мной продемонстрировано в коде, прикрепленному в этом сообщении

 
Yury Kulikov:

Присоединюсь к "обвинениям", не выдержал :)

Хороший пример - как не надо программировать. Если таким образом написан весь ваш ГУИ, то мы нескоро его увидим. :(

Что ни строчка, то "шедевр": такое нагромождение ошибок и ляпов, одна надежда, что mql4 вывезет. Теперь стало понятно почему используется мт4.

Публикация таких кодов, и последующая реакция на критику, думаю это не уважение к аудитории форума. Вам не хотят зла - вам хотят помочь.

А по поводу сравнения алгоритмов, то можно сравнить и визуально. Вы же не предложили доказательства в цифрах, что ваш алгоритм дает оттенки на 99% близкие к "виндоус оттенкам".

Слева - как бы ваш подход, справа - Nikolai Semko. (Использован модифицированный скрипт  Nikolai Semko)


Вы скрипт брали? На мт4 ставили? Проверяли? Сравнивали? А присоединятся к обвинениям здесь все горазды.))) 

По поводу скрипта - это не мой алгоритм. Его Николай модифицировал сам не зная как. Вот к нему и обращайтесь по поводу этих картинок.

 
Nikolai Semko:
Вообще говоря, более нужной является  функция получения массива градиентов между двумя цветами. Так как это проще и на практике это нужнее.

Если нужен градиент одного цвета до белого или до черного, то можно получить их таким образом с помощью этой функции.


Я же тебе говорил. Отключи ненужное мелькание. Выведи один прямоугольник. У тебя там проблема с рисованием, которая не имеет отношения к моему алгоритму. Я тебе на нее указал. Разберись.

 
Реter Konow:

Я же тебе говорил. Отключи ненужное мелькание. Выведи один прямоугольник. У тебя там проблема с рисованием, которая не имеет отношения к моему алгоритму. Я тебе на нее указал. Разберись.

Петр хватит слов. Докажи кодом с визуализацией, как делал я.  Повторюсь -я твою функцию не менял, а только вытянул из нее значение uint вместо string.
Предоставь рабочий вариант своей функции без стрингов в MQL5 наконец ! 

 
Yury Kulikov:

Присоединюсь к "обвинениям", не выдержал :)

Хороший пример - как не надо программировать. Если таким образом написан весь ваш ГУИ, то мы нескоро его увидим. :(

Что ни строчка, то "шедевр": такое нагромождение ошибок и ляпов, одна надежда, что mql4 вывезет. Теперь стало понятно почему используется мт4.

Публикация таких кодов, и последующая реакция на критику, думаю это не уважение к аудитории форума. Вам не хотят зла - вам хотят помочь.

А по поводу сравнения алгоритмов, то можно сравнить и визуально. Вы же не предложили доказательства в цифрах, что ваш алгоритм дает оттенки на 99% близкие к "виндоус оттенкам".

Слева - как бы ваш подход, справа - Nikolai Semko. (Использован модифицированный скрипт  Nikolai Semko)


Что вы эти гифки суете? Хотите произвести впечатление? Увы, вам придется для этого больше постараться. Я слишком искушен в графике. Лучше возьмите мой алгоритм, поставьте на мт4 и распечатайте цвета. Потом, проверьте по цветовой палитре, уважаемый МЕНТОР.

 
Nikolai Semko:

Петр хватит слов. Докажи кодом с визуализацией, как делал я.  Повторюсь -я твою функцию не менял, а только вытянул из нее значение uint вместо string

Я в процессе перевода своего кода на МТ5. Как закончу - покажу.

 
Nikolai Semko:
Вообще говоря, более нужной является  функция получения массива градиентов между двумя цветами.

наверное так быстрее немного будет:

void Gradient(uint clr1,uint clr2,uint &arr[],uint size)
  {
   if(size==0) return;
   ArrayResize(arr,size);
   rgb c1,c2;
   c1.clr=clr1;
   c2.clr=clr2;
   double R1=c1.c[2],G1=c1.c[1],B1=c1.c[0];
   double R2=c2.c[2],G2=c2.c[1],B2=c2.c[0];
   double deltaR=(R2-R1)/(size-1);
   double deltaG=(G2-G1)/(size-1);
   double deltaB=(B2-B1)/(size-1);
   R1 += 0.4999;
   G1 += 0.4999;
   B1 += 0.4999;
   for(uint i=0;i<size;i++)
     {
      R1+=deltaR; c1.c[2]=uchar (R1);
      G1+=deltaG; c1.c[1]=uchar (G1);
      B1+=deltaB; c1.c[0]=uchar (B1);
      arr[i]=c1.clr;
     }
  }
 
Nikolai Semko:

Петр хватит слов. Докажи кодом с визуализацией, как делал я.  Повторюсь -я твою функцию не менял, а только вытянул из нее значение uint вместо string

Почему у ты не сверяешь с цветовой палитрой? Неужели сложно?

И почему у тебя комментирование строки с выводом текста меняет рисование всего прямоугольника?

 
Реter Konow:

Почему у ты не сверяешь с цветовой палитрой? Неужели сложно?

ты хоть бы ссылку сбросил что-ли. С чем сравнивать.

 
Похоже, все глюки возникли при переходе на МТ5. На МТ4 ничего подобного нет. Требовательность МТ5 намного выше, что создает проблемы. Но это не значит, что решение не годится. Нужно только код подрихтовать.
Причина обращения: