注意了,比赛! - 页 13

 

呜呼 )

我同意derebane方案,公开讨论将是最有用的。

 
TheXpert:
是的,这是个问题。这个话题需要komposter和tol64

谢谢你。我没有参加比赛,因为我目前正在做一个 非常大的项目。它很快就会向所有人开放。将有很多东西需要讨论,也可能在此基础上安排各种竞赛。我还不能给出更多细节。)

 
好了,我们开始吧 :)
Класс для работы с кнопками произвольной формы
Класс для работы с кнопками произвольной формы
  • 2015.03.18
  • Dmitriy Parfenovich
  • www.mql5.com
Класс предназначен для создания интерактивных кнопок на графике цены с различными состояниями.
 
fyords:
在这里,我们走了 :)

我的仍然在测试中...当我看到它时,我会让你知道...

已添加。

我的选择来了:)

 
fyords:

查了一下 - 5分 :)如果用户不需要标准库,你的版本会更好。

实际上,我之所以费心研究这个库,是因为我现在有一个程序,是在它的基础上编写的。这个设计非常笨拙,我想改进它。而在这里,我刚刚得到一个竞赛,这与我非常相关。

从你的实施的优点来看

1)没有 拐杖。我已经得到了它和标准类的继承权,以及其他保持与标准库兼容的乐趣

2)按钮状态和图表上的对象状态 相吻合。

3)函数有输入值的错误检查我,在一些地方,忽略了这一点......

4)在专家顾问中,按钮的创建更加优雅(通过嵌套循环)。我没有想过这个问题。

5)你不仅可以设置图表角度,还可以设置按钮角度 老实说--我不知道它在哪里能派 上用场:) 但也许......。

6) 我有6张照片我有4个。

7)CCanvas - 你可以在按钮上写些东西,添加几个函数,就 可以了。在多语言应用的情况下,它是非常方便的。我将不得不再次制作拐杖。

8)你的代码理解起来更快

我已经注意到一些改进。

1)如果你减少聊天,使按钮部分隐藏(底部或顶部)--按钮背光没有复位(见图)

2)我没有看到一个创建 "不粘锅按钮 "的选项即,已经下沉并立即脱落的(好吧,以标准来类比)。

3)你有一个更复杂的定义透明度的方法。我甚至不明白它是如何在各地运作的。如果你自己准备图像,就会像我这样做得更容易。我 只是用函数从图像中提取透明度(感谢 整数 )。

double GetAlfa(uint  aColor)
  {
   return((aColor>>24)&0xff);
  }

然后我用阈值水平来检查(我已经取了250,但当然我需要添加功能,所以我可以设置它)。

 double alfa=GetAlfa(data[y*m_SizeX+x]);
 if(alfa>250)
   {
    m_T[y*m_SizeX+x]=true;
   }
 else
   {
   m_T[y*m_SizeX+x]=false;
   }

虽然,如果你在不打开图形编辑器的情况下使用现成的图片,那么你的版本可能会更方便。

ZS: 我刚刚注意到CCanvas类也有透明度定义功能。

#define  GETRGBA(clr)   uchar((clr)>>24)
 

谢谢你。我会看一下你的。

MigVRN:

我注意到可以改进的地方: ...

  1. 如果指针走到窗口外,就不会产生 "移动鼠标 "事件,因此似乎不可能修复这个错误。
  2. 任务中没有这些东西,虽然不需要花太多精力就能解决。
  3. 在我看来,有了透明度,一切就简单了:取2e个点(最暗和最亮),平均值将是一个阈值。如果图片中存在透明区域,那么最暗的颜色会向0移动,因此,阈值也会。
    之所以做出这个决定,是因为同一个功能在透明和单独的遮罩下都能工作。
    我还想说的是,这种方法(单独的遮罩)允许你使用没有透明度的图像。好吧,也许开发者不擅长使用图形编辑器 :)
    或者,指定掩码颜色的变体--作为变体,为绿色按钮指定白色,它 "将变得透明",而不需要围绕透明度和额外的掩码跳舞。
 
MigVRN:

我在那里为你做了一项工作...我在等待答复。

感谢参与者。

 
TheXpert #:
是的,图片中的按钮区域是一个不透明的区域。