在Canvas上做一个众包项目 - 页 31

 
Реter Konow:
套用一句话:你最终会得到一个带有接口的EA,尽管其中一部分是由我完成的,另一部分是由你完成的。这并不妨碍你将两部分合并成一个EA。
虽然,你可以走另一条路。我将发布构造函数,而你,在我的帮助下,将设计出你需要的gui。然后你将打印出核心,并将其插入引擎,你将把它插入专家顾问。这就更好了,因为你将立即学会如何用标记语言写出图形,而且你将能够自己纠正它们。
 
无论如何,这就是我们要做的。我将在这里发布构造器并教授如何 在其上设计 gui。目前还没有文档,如果你有兴趣,请继续关注该教程。

该培训将包括以下主题。

1.创建一个功能性的gui。
2.造型设计。
3.打印并将内核和引擎文件插入到应用程序中(非常简单--像一个内联)。
4.通过API功能将gui元素连接到应用程序(API文件会自动创建)。

等待在这个主题中发表。
 
Реter Konow:
无论如何,这就是我们要做的。我将在这里发布构建器并教授如何在其上进行设计的gui。目前还没有文档,所以如果你感兴趣,请留意教程的内容。

该培训将包括以下主题。

1.创建一个功能性的gui。
2.风格设计。
3.打印并连接内核和引擎文件到应用程序(非常简单--像一个内联)。
4.通过API功能将gui元素连接到应用程序(API文件会自动创建)。

期待在本处发表。

收到!

 
---:

我没有录制视频,但我把一个例子发给你。

有600个下拉列表。

移动鼠标--随着每个事件和颜色的改变,整个CCanvas被重新绘制。

你可以在位图属性中看到最终的尺寸--1500x600 px(与你的800x500和250ms滞后相比)。这相当于900,000个像素,而且都是即时重绘。 没有几秒钟是不可能的。

每个列表首先在自己的画布上以自己的尺寸呈现(为了不溢出),然后在整体上进行耕耘。因此,我们在每个鼠标事件中有600个ResourceCreate调用
这意味着,正如你从反应速度中看到的那样,帧数足以显示动画片。

MT开发者提供了令人满意的工具,没有滞后性(我指的是ResourceCreate bitmaps)。

是否有可能在开放源码中看到这个例子?

 
Алексей Барбашин:

令人难过的是,该项目已经进入了封闭模式(

它还没有走远。

 
Алексей Барбашин:

是否有可能在开放源码中看到这个例子?

你对kanvas有什么不理解?

1.它像所有其他图形对象一样对事件作出反应。换句话说,你可以在鼠标移动时跟踪它的坐标,对鼠标 和键盘点击 事件作出反应。

2.它可以独立改变每个像素的颜色。

你还需要什么?然后你需要一些头脑和愿意无意义地浪费大量时间。

 
你好。
 
Dmitry Fedoseev:

你对使用画布的工作有什么不理解?

1.它像所有其他图形对象一样对事件作出反应。也就是说,你可以在它移动时跟踪鼠标坐标,对鼠标 和键盘点击 事件作出反应。

2.它可以独立改变每个像素的颜色。

你还需要什么?接下来你需要的是一些头脑和浪费大量时间的愿望。

那么kanvas本身对事件没有反应。而你可以改变每个像素的事实是不言而喻的。

我对实现画布的碎片化重绘感兴趣。

但似乎很多人已经定下了全面重绘画布的做法,即使只需要重绘一小部分,也就是一个控件。

 
Алексей Барбашин:

嗯,画布本身对事件没有反应。而且,你可以改变每一个像素的事实是很清楚的。

我对零星重绘画布的实施感兴趣。

但似乎很多人已经定下了全面重绘画布,即使只需要重绘一小部分,即一个控件。

画布本身对事件没有反应,但它本身并不存在。

碎片化的重绘--值得开始做,如果有这样的目标,会变得更加清晰。我认为应该有一个控件 阵列,每个控件都有明确的边界。当你需要重绘一个控件时,你必须翻阅所有的控件,看看还有哪些属于这个区域,然后只重绘它们。至少像这样。

 
Dmitry Fedoseev:

画布本身不是反应性的,但它本身并不存在。

碎片化的重绘--值得开始做,如果有这样的目标,会变得更清晰。我认为应该有一个控件阵列,每个控件都有明确的边界。当你需要重绘一个控件时,你必须翻阅所有的控件,看看还有哪些属于这个区域,然后只重绘它们。至少是这样。

这正是我建造它的方式。基本上,我以标准库为 基础,因为它有非常好的转移事件的时刻和其他一些东西。阿纳托利为每一个不同类别的元素创造了分组,而在标准一中,一切都被简化为一个基本对象。

因此,WndObject包含了任何控件最常见的属性的完整描述(大小、位置、背景颜色、边框颜色、边框厚度、文本、图像,等等)。此外,同一个类还包含对父控件的引用。也就是说,如果没有为控件指定父级,那么它就在图形上创建自己的kanvas对象,否则就在父级的kanvas上绘制。根据其位置(独立的、从属的),也会计算出项目位置的坐标。此外,同一个对象还有一个数组,其中包含了该项目所占用的父区域的原始描述。这个想法本身是这样的:如果只有元素本身发生了变化,那么在它被重绘之前,像素区域会被父像素的矩阵填满,只有在这时才会应用控件的新状态。这种方法不需要每次都重绘整个画布,因为重绘是绕过数组中的所有元素,并对嵌套元素进行递归。对于渲染和更新一个特定的控件,我们建议使用两个函数:一个是在创建整个控件时在父控件(或空白画布)上绘制,另一个是只更新给定控件的显示。所以它是这样的。

仍然 "迷失 "在事件模型中:在哪些变化之后,哪些层需要重新绘制。

尼古拉在他的例子中表明,原则上没有必要费力地存储局部区域的数据,因为整个画布的重绘工作非常迅速,没有必要深入到细节,总是一次性重绘就足够了。
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.