将颜色分解为阴影的功能。 - 页 6

 

回到谈论颜色分解算法的问题。我对偏离主题表示歉意。

如果有人对如何和在何处应用该算法有疑问,可以在前面的页面上找到解释。

 
Vladislav Andruschenko:

请允许我插入我对GUI和这里所讨论的其他一切的 "10个点"。

每个人都有一个梦想,一个爱好,一个激情。

有些人去钓鱼,有些人喜欢摄影,有些人喜欢旅游,有些人喜欢做飞机模型....


这里也是如此。

MetaTrader的开发人员在普及MQL5 方面迈出了很好的一步!

所有关于缺乏模式或结构的帖子都是使用它的人所需要的。


同样创造GUI库,例如Anatoly,是他的爱好。 他做到了,并向大家展示了这一点。

我看着,想知道...而在他开始用他的库 "做 "的时候--我已经计划 "做一个GUI "很长时间了, 但我退缩了。

然后我没有 "追赶 "到一个做得很辛苦的人。

他做了这个图书馆,我相信很多人都在使用它。

对他来说,这是一个爱好,一个最喜欢做的事情。他只是参与了这个项目(可能),并对其感到厌恶。而他现在已经厌烦了。


彼得也有他的爱好。彼得做了他自己的GUI。

而每个人都会坚持自己的观点。

有些人需要它,有些人不需要。


为什么要证明什么?改变你的想法?试图 成为 "有帮助的人"? 成为他们,而不是试图成为他们。


有些人需要EA中的图形用户界面,有些人不需要。

有人在MQL中画游戏,有人在EA中不需要任何参数。

每个人都是如此不同,以至于说服任何人的事情都没有意义。

让每个人都有自己的观点,管好自己的事。那么就不会有冲突。


我们都是从某个地方开始的。我们都从对方那里学到了一些东西。为什么以前大家都比较友好?

弗拉迪斯拉夫。我的动力来自于对了解我与人的差异的渴望。为什么我和他们有如此不同的看法。这就是全部。

有些人,认为这是宣传他们的产品,有些人认为是一种固定的东西,有些人认为是一种固定的想法,等等。

但事实上--我争论和证明,因为我想了解他人和自己。

 
Реter Konow:

弗拉迪斯拉夫。我的动力来自于对了解我与人的差异的渴望。为什么我和他们有如此不同的看法。这就是全部。

有些人把它看作是他们产品的广告,有些人把它看作是一种固定的东西,有些人把它看作是一种固定的思想,等等。

但事实上--我争论和证明,因为我想了解他人和自己。

我向你保证,有:OOP和程序化编程。

凡是需要OOP的地方--就使用OOP。

在需要OOP的地方,使用一种简单的编程类型--程序性编程。

有多少人就有多少种意见。

如果你去找一家IT公司,告诉他们你是用PP编程的,他们会把你打发走。

在这里,你做你想做的事。


只要你开始写关于你的GUI的教程,你就会建立 "你的 "粉丝大军。还会有一支巨魔大军,但这也是必须的 :-)

让他们自己争论什么是更好的。OOP上的GUI或PP上的GUI。


请相信我。

做你喜欢的事,就会有那些人使用它。
不要争论,不要陷入冲突。在这上面浪费了很多精力,最好是把你所有的力量都用在你的项目上!

 
Vladislav Andruschenko:

我向你保证,有:OOP和程序化编程。

在需要OOP的地方,就使用OOP。

在需要OOP的地方,使用一种简单的编程类型--程序性编程。

有多少人就有多少种意见。

如果你去找一家IT公司,告诉他们你是用PP编程的,他们会把你打发走。

在这里,你做你想做的事。


只要你开始写关于你的GUI的教程,你就会建立 "你的 "粉丝大军。还会有一支巨魔大军,但这也是必须的 :-)

让他们自己争论什么是更好的。OOP上的GUI或PP上的GUI。


在这一点上,请相信我。

做你喜欢的事,就会有那些人使用它。
不要争论,不要冲突。很多精力都花在这上面,最好是把所有的精力都用在你的项目上!

好的。我同意你的观点。

那你对我的算法有什么看法?

在你看来,它有多大的便利和作用?

 
Реter Konow:

很好。我同意你的观点。

你认为我的算法如何?

在你看来,它有多大的便利和作用?


我,作为 "轻松和简单 "的支持者,更喜欢你的版本。

但我和其他许多人一样,坚持认为OOP是强制性的。

因为我的具体工作,我知道,例如 "客户",需要一个明确的代码,甚至用俄语的变量名称。一般来说,俄罗斯顾客对它很疯狂。

而既然他们 "订购 "了一个程序,就意味着他们什么都不懂,他们需要一个更轻的代码。用俄文变量名.......


但我很早就意识到,自定义编程会拖累你的工作!没有自我发展。现在,在不显示代码的情况下制作自己的项目更有趣。在这里你已经可以使用OOP

而在一般情况下,用户需要一个简单的构造器,其中有元素,它们可以直接在图形上管理。


再一次。每个解决方案都有自己的粉丝大军。

只要做你喜欢的事...


这都是经验之谈,所以我并不声称自己是正确的,我所说的....

我阅读了一般讨论中的所有主题,(这都是因为我太懒了,不愿意浏览该部分下面的内容:-)),并感到很惊讶。

有时我想插入 "我的12美分",但要向别人证明什么就会耗费精力。

从同一脉络--关于 "你在市场上需要什么 "的讨论--每个人都需要不同的东西。

有人需要有一个RISK参数的全自动,有人需要100500个参数的全自动!

最好是有一个项目,并将其发展到筋疲力尽的地步,然后才接手下一个项目。

比方说,改变程序的名称和测试器的图像,成百上千的项目,没有人需要....。


IMHO

尊重所有的人!!!。

 

谢谢你的反馈。很高兴你喜欢它。如果你能在你的开发中使用这种算法,我会很高兴。

只是在这里有点跑题了。这是我的错。这就是我们所谈论的算法。其余的话题可以忽略不计。
 
Vladislav Andruschenko:


我,作为 "轻松和简单 "的支持者,更喜欢你的版本。

但我和其他许多人一样,坚持认为OOP是强制性的。

因为我的工作,我知道,例如 "客户",需要清晰的代码,甚至要用俄语的变量名称。一般来说,俄罗斯顾客对它很疯狂

而既然他们 "订购 "了一个程序,就意味着他们什么都不懂,他们需要一个更轻的代码。与俄罗斯的变量名称.......

...

在我的实践中,没有人被卡住过,除了这个论坛上的3个人。

例如,我对这样的代码感到呕吐,我读它不超过3行,然后删除它。

 
Vitaly Muzichenko:

在我的实践中,从来没有人被拖走,除了这个论坛上的3个人。

例如,我对这样的代码感到厌恶,我不读超过3行就删除它。

你,作为一个讲英语的人,可以随意忽略我的决定。那里的英语单词很少。

顺便说一句,既然你对英文代码如此精通,请帮我解析尼古拉-森科建议的代码。

#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164

union rgb {uint clr; uchar c[4];};

void OnStart()
  {
   rgb c,cc;
   double d=5;
   while(!IsStopped())
     {
      c.c[2]=uchar(127.5*(1+sin(d*1.2))+0.4999); c.c[1]=uchar(127.5*(1+sin(d*1.9))+0.4999); c.c[0]=uchar(127.5*(1+sin(d*2.8))+0.4999);  // генерируем новый цвет
      cc.clr=c.clr;
      double k0,k1,k2;
      if(c.c[2]>=c.c[1] && c.c[2]>=c.c[0]) {k2=1; if(c.c[2]==0) {k1=1; k0=1;} else {k1=(double)c.c[1]/c.c[2]; k0=(double)c.c[0]/c.c[2];}}// если Red - максимальный цвет
      else if(c.c[1]>=c.c[2] && c.c[1]>=c.c[0]) {k1=1; k2=(double)c.c[2]/c.c[1]; k0=(double)c.c[0]/c.c[1];} // если Green - максимальный цвет
      else {k0=1; k2=(double)c.c[2]/c.c[0]; k1=(double)c.c[1]/c.c[0];} // если Blue - максимальный цвет
      for(int y=0; y<W.Height; y++)
        {
         double k=255.0*(double)y/(W.Height-1);
         c.c[2]=uchar(k2*k+0.4999);
         c.c[1]=uchar(k1*k+0.4999);
         c.c[0]=uchar(k0*k+0.4999);
         Canvas.LineHorizontal(0,W.Width-1,y,ColorToARGB(c.clr,240));
        }
      Canvas.FillRectangle(W.Width/2-80,W.Height/2-50,W.Width/2+80,W.Height/2+50,ColorToARGB(cc.clr,240));
      Canvas.CurentFont("Tahoma",20,22,ColorToARGB(~cc.clr)); // 20 -  размер шрифта, 22 - межстрочный интервал
      Canvas.TextPosition(W.Width/2-70,W.Height/2-40);
      Canvas.Comm("Текущий цвет:");
      Canvas.Comm("R = "+string(cc.c[2]));
      Canvas.Comm("G = "+string(cc.c[1]));
      Canvas.Comm("B = "+string(cc.c[0]));
      ChartChanged(); // на всякий случай контролируем изменение размеров окна, т.к. это скрипт (в индикаторах и экспертах это происходит автоматически)
      Canvas.Update();
      d+=0.01;
      Sleep(30);
     }
  }

说实话,我不明白它是如何运作的。它有很多短的英语音节。就是你喜欢的。

 
Vitaly Muzichenko:

在我的实践中,从来没有人被拖走,除了这个论坛上的3个人。

例如,我对这样的代码感到厌烦,我不读超过3行,然后就删除它。

我完全同意你的观点。

变量必须是一种国际语言。


但我说的是 "客户"。

我遇到了一些人,他们希望变量是俄文的。

我怎么能反驳呢?客户的 "需求"。

这就是为什么我一年前放弃了订单,这样我就不用证明什么了。


例如,你用英文名字下了一个订单,没有人告诉你什么。

而你尝试用俄语创造变量--他会喜欢的。而他会把自己拖走,因为他不懂英语。

 
Реter Konow:

你,作为一个讲英语的人,可以随意忽略我的决定。那里的英语单词很少。

顺便说一下,既然你对英文代码这么在行,请帮我看看Nikolay Semko提议的代码。

说实话,我不明白它是如何运作的。它有很多短的英语音节。就是你喜欢的。


好吧,英语中的名字并不是白白发明的。

我可以再给你一个例子,当俄罗斯的名字会杀死你的代码。

你把你的代码给一个没有西里尔文 的客户。就这样了。....全部消失.....:-)


还有一点。

例如,GOOGLE翻译器的母语是英语。如果你用英语写标题,他们就能用翻译机进行翻译。

否则就会出现问题。

好吧,这只是为未来说的。


对于俄罗斯人来说,语言是俄语。

对于我们其他人来说,英语是更熟悉的。

西班牙语也是最受欢迎的语言。