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

 
Реter Konow:

尼古拉,这听起来像幼儿园。"快4倍 "的说法是不成立的,因为它没有被证实。


  1. 在你的MT5版本的我的解决方案中注释掉这一行,你会看到区别。

这条线由于某种原因会影响整个矩形的绘制。但这不是我的故障。看看吧。

继续研究你的那些小毛病。我想看看这是否真的是因为我的算法。


并关闭不必要的数字闪动。取出所有不必要的东西。让一个简单的矩形与一个原始颜色的梯度显示一次。没有不必要的噱头。

彼得,我在提供了带有证明的代码 后写了 "快4倍" 我不明白还需要什么。

我已经关闭了所有的东西--故障仍在继续。我在做这个躲避器之前就看到了这个故障。如果你插入我的梯度,即使有文字悬空,这个故障也不存在。我已经在本帖 所附的代码中演示了这一点。

 
Yury Kulikov:

我将加入'指责'的行列,无法接受 :)

这是一个很好的例子,说明如何不编程。如果你的整个GUI都是这样写的,那么我们将有一段时间看不到它了。:(

每一行都是 "杰作":这么多的错误和漏洞,这么多的希望,mql4会成功的。我现在明白为什么要使用mt4了。

我认为,发表这样的代码和随后对批评的反应是不尊重论坛的观众。他们不想伤害你,他们想帮助你。

至于比较算法,你可以从视觉上进行比较。这并不像你提供的数字证明你的算法给出了99%接近于 "窗帘 "的阴影。

左边是你的方法,右边是尼古拉-森科的 方法。(使用了修改过的尼古拉-森科 的脚本)。


你拿了这个剧本吗?你把它安装在MT4上了吗?检查了吗?你对比过吗?(他们都渴望加入指责的行列))。

至于剧本--这不是我的算法。尼古拉修改了它,却不知道如何修改。关于这些照片,应该和他谈谈。

 
Nikolai Semko:
一般来说,获得两个颜色之间的梯度数组的函数更有用。因为它在实践中更简单、更有用。

如果你需要一种颜色到白色或到黑色的渐变,你可以通过这个函数得到它们。


我告诉过你。关掉不必要的闪动。输出一个单一的矩形。你那里有一个绘画问题,与我的算法无关。我向你指出了这一点。琢磨琢磨。

 
Реter Konow:

我告诉过你。关掉不必要的闪动。输出一个单一的矩形。你那里有一个绘画问题,与我的算法无关。我向你指出了这一点。弄清楚。

彼得,说得够多了。我重复一遍,我没有改变你的函数,只是从它那里提取了一个uint值,而不是一个字符串,我是用可视化的代码来证明的。
请最后向我提供您在MQL5中没有字符串的函数的工作实例

 
Yury Kulikov:

我将加入'指责'的行列,无法接受 :)

这是一个很好的例子,说明如何不编程。如果你的整个GUI都是这样写的,那么我们将有一段时间看不到它了。:(

每一行都是 "杰作":这么多的错误和漏洞,这么多的希望,mql4会成功的。我现在明白为什么要使用mt4了。

我认为,发表这样的代码和随后对批评的反应是不尊重论坛的观众。他们不想伤害你,他们想帮助你。

至于比较算法,你可以从视觉上进行比较。这并不像你提供的数字证明你的算法给出了99%接近于 "窗帘 "的阴影。

左边是你的方法,右边是尼古拉-森科的 方法。(使用了修改过的尼古拉-森科 的脚本)。


你为什么要放这些GIF?你想给人留下印象吗?唉,你必须更加努力。我在图形方面太复杂了。最好把我的算法,放在mt4上,然后打印颜色。然后,对照调色板 检查,尊敬的导师。

 
Nikolai Semko:

彼得,说得够多了。我重复一遍:我没有改变你的函数,只是从里面提取了uint值而不是字符串。

我正在将我的代码翻译成MT5的过程中。我完成后会给你看。

 
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值而不是字符串。

你为什么不对照调色板 检查呢?这真的有那么难吗?

还有,为什么用文本输出注释一条线会改变整个矩形的绘制?

 
Реter Konow:

你为什么不用调色板检查一下呢?这能有多难?

你至少可以抛出一个链接或其他东西。与什么相比较。

 
所有的故障似乎都是在我切换到MT5时发生的。MT4上没有这样的东西。MT5的要求更高了,这就产生了问题。但这并不意味着解决方案没有好处。你只需要调整一下代码。