在Canvas上做一个众包项目 - 页 13 1...67891011121314151617181920...45 新评论 --- 2016.11.28 15:00 #121 Igor Volodin:对我来说,创建一个产品开发团队更容易,其成员在商定的程度上,将从产品销售中获得利润(也许有人是项目的思想家,有人为股份提供资金,有人是程序员)。 而且,由于每个人都有经济上的动力,所以也要把接口的必要库作为项目的一部分来实现。 同意,但图书馆本身应该是公开的众包 ) Alexey Volchanskiy 2016.11.28 15:08 #122 o_O:伊戈尔-沃罗金。对我来说,创建一个产品开发团队更容易,其成员在商定的程度上,将从产品销售中获得利润(也许有人是项目的思想家,有人为股份提供资金,有人是程序员)。 而且由于所有的人都有经济上的动机--在项目内实施,并为接口提供必要的库。 我同意,但这个库本身应该是开源的众包的)。 我读了这个主题,不明白有什么必要--在Canvas上从头开始画按钮。你能不带感情地解释吗? --- 2016.11.28 15:26 #123 Alexey Volchanskiy: 我看了这个主题,还是不明白为什么有必要在Canvas上从头画一个按钮。你能不带感情地解释吗? 我在ObjectCreate和ResourceCreate 之间做了选择。,因为MT开发者不是万能的,用琐碎的请求来打扰他们是很耗时间的。 Igor Volodin 2016.11.28 17:06 #124 为什么它可能会派上用场。1.位图上的界面是快速的。如此之快,以至于它几乎与系统中的那个没有区别。例如,我已经实现了带有梯度的半透明元素,即使它们移动,也能顺利渲染,没有可见的延迟,同时考虑到其他带有半透明梯度的对象上的颜色混合和alpha通道计算。 2.该接口是可扩展的。你可以使应用程序更加复杂,它不会因为删除和创建大量的图对象而变慢。重绘的成本是最低的,它只是在千分之一秒内更换一张图片。 3.可以创建现成的控件,也可以创建新的控件,因为你可以提供自己的事件池,比如说。OnMouseDown - 按住LKMOnMouseUp - 按下LKMOnMouseHoverOn - 将鼠标光标悬停在一个物体上。OnMouseHoverOut - 将鼠标指针从对象上移开OnMouseClick - 在对象边界内按下并点击。OnMouseDblClick - 鼠标在对象的边界内双击。OnDragStart - 在按下鼠标左键开始移动时发生一次事件。OnDragMove - 用鼠标左键移动时产生的事件OnDragEnd - 使用LKM移动后产生的事件OnPut - 对象被投向另一个对象OnGet - 对象被转储为另一个对象OnFocus - 对象获得焦点OnBlur - 对象失去焦点OnResize - 对象已经改变了尺寸OnParentResize - 父对象已经改变了尺寸OnKeyPress - 一个键被按下OnChange - 一个字段的值改变了等。 Making a crowdsourced project Alexey Volchanskiy 2016.11.28 17:09 #125 Igor Volodin:为什么它可能会派上用场。1.位图上的界面是快速的。速度之快,几乎与系统界面无异。例如,我已经实现了带有梯度的半透明元素,即使它们移动,也能顺利渲染,没有任何可见的延迟,考虑到其他带有半透明梯度的对象上的颜色混合和alpha通道计算。 2.该接口是可扩展的。你可以使应用程序更加复杂,它不会因为删除和创建大量的图对象而变慢。重绘的成本是最低的,它只是在千分之一秒内更换一张图片。 3.可以创建现成的控件,也可以创建新的控件,因为你可以提供自己的事件池,比如说。OnMouseDown - 按住LKMOnMouseUp - 按下LKMOnMouseHoverOn - 将鼠标光标悬停在一个物体上。OnMouseHoverOut - 将鼠标指针从对象上移开OnMouseClick - 在对象边界内按下并点击。OnMouseDblClick - 鼠标在对象的边界内双击。OnDragStart - 在按下鼠标左键开始移动时发生一次事件。OnDragMove - 用鼠标左键移动时产生的事件OnDragEnd - 使用LKM移动后产生的事件OnPut - 对象被投向另一个对象OnGet - 对象被转储为另一个对象OnFocus - 对象获得焦点OnBlur - 对象失去焦点OnResize - 对象的尺寸已经改变OnParentResize - 父对象已经改变了尺寸OnKeyPress - 一个键被按下OnChange - 一个字段的值改变了等。 详尽无遗,谢谢你! Igor Volodin 2016.11.28 17:34 #126 读了这个主题,很有意思。遗憾的是,大约三年前,关于接口的问题没有这样的骚动。我不认为发布我的代码有什么意义,因为很有可能由于懒惰和参与者之间的沟通困难(他们已经被观察到了),我的代码会被拖到地下室去修改,我(和社区)根本不会从中受益,所以这个倡议会消亡。但要参与这个项目,我可以,从讨论必要的功能和铸造具体的实施细节开始,因为这样做是有好处的,姑且称之为框架。这个好处很简单,亚历克斯在前几篇文章中已经说过。社区可以影响终端的开发者,将修改引入MQL平台。我对改进的希望(直接与编程接口有关)如下。MQL应用程序 - 作为一个独立的程序类型,不取消其他程序(它没有onTick,也没有可能参考默认的符号 - 这是过去的遗迹,但有可能得到任何符号的交易环境和交易,因为一切是多货币),应用程序不应该在特定符号的图表上启动,而是在自己的窗口中。如果你把这样的程序拖到图表上,就会打开一个新的窗口。而拖放是没有必要的--在导航器中点击2次--也会打开一个新窗口。这类似于一些人要求为另一种语言的开发提供终端的API。开发主题--可以假设这样的程序,经过特殊编译,可以在没有终端的情况下运行(为了安全起见,只允许通过市场进行这种编译)。这听起来可能很疯狂,但如果是这样呢?支持第三方矢量字体作为一个单独的文件呈现,并能够作为一种资源进行编译(在文档中说明,但没有实施)。鼠标滚动事件捕获右键菜单锁定。右边的按钮现在被处理了,但它是无用的。处理系统剪贴板,创建自己的文本编辑控件(包括多行编辑器),空格键和回车键已经可以被锁定--不错。 --- 2016.11.28 19:34 #127 @Igor Volodin,@Combinator,@Anatoli Kazharski我先说说疮疤的问题)。 我最关心的问题是存储渲染参数的某种通用性/抽象性。----据我们了解,所有的控件都同样使用字体、背景颜色和文本颜色等。 当所有这些参数对所有的控件都是一样的时候,那么界面就会有一个共同的外观,有一个单一的概念。但如何存储它们呢?因为控件并不总是使用所有的参数。+ 这个系统很复杂,因为元素有不同的状态,应该以不同的方式使用字体和背景颜色。它们是激活、禁用、结束或选择等。 + 有几组控制器--解脱(如Button)和输入字段(如Edit、List),什么时候是渲染它们的背景?----在目前的工作思路中,我有一个GAttribBase类的 最小属性元素,它包含5个基本参数(字体/大小,背景/边界颜色,边界大小)。这些基础元素被用来形成一个数组,用于GAttribut类的 状态(激活/取消/结束/选择,等等)。然后为不同的元素类型填充GAttribut--浮雕、可编辑等。因此,我们只需填写一次渲染参数(我们将它们存储在xml中),它们可以被编辑,以创建不同的设计,我们在全局范围内使用它们,而不需要为每个控制器定义它们。当然,如果某些控制器需要定义自己的渲染参数--只要在控件中创建自己的GAttributribut对象并指定所需的颜色即可。----这种模式是有效的,统一的设计很快就实现了,所有的控件都从公共阵列中获取颜色。 但在我看来,这并不普遍。用户不了解基础GAttribBase的哪些参数被用于渲染这个或那个控件。 要让编码员确切地知道要改变什么颜色,他就必须研究控件的渲染功能。 这真的很麻烦。-----总之,有什么想法可以让编码者摆脱颜色管理(直接使用预定义的颜色,在一开始就不去管它们)。另一方面,如果他想给屏幕上的一些控件重新上色,他不必调查在什么情况下使用什么GAttribBase。 Igor Volodin 2016.11.28 20:26 #128 o_O:@Igor Volodin,@Combinator,@Anatoli Kazharski总的来说--你有什么想法,一方面让编码者摆脱色彩工作(这样它就可以直接使用铺设好的颜色,而不需要在一开始就对它们进行处理)。而另一方面,如果他们想给屏幕上的一些控件重新上色,他们可以不用进入绘图函数的迷宫,搜索什么GAttribBase在什么情况下使用。好了,主题。例如,我们应用程序的主对象,让我们称之为App,与ConcreteTheme对象相关联。什么是主题对象。 颜色(背景、前景、禁用、激活等)、基本尺寸、标准情况下的字体大小:标题大小、普通大小等。为:面板、按钮、复选框等提供精灵。一个新的主题是一个新的类/结构,其值已经改变。但更好的是,主题可以通过只重写某些参数来继承。 其余的 - 控件的层次结构,其中每个控制器默认使用对象主题的必要值之一。如果它需要覆盖这个,我们就调用一个方法来处理这个属性,指定新的值。例如,SetBgColor(XRGB(255,0,128))。CView - 一个提供基本的基于事件的交互的基本类- CRect - 坐标- Cpanel有一个bgcolor- CB按钮有一个状态对象,每个状态都有bg- CText有一个文本颜色和字体属性- 循环 以此类推。如果你想用xml来描述这些元素。然后对于每个类的控件或基元,我们需要创建一个生成类,我们称之为 "build-container",它将把属性(bgcolor="(255,0,128)")映射到类的相应方法(SetBgColor(attrValue))。这样的构建容器将被XML解析器解析,输出将是一个用所需值初始化的对象,如果没有指定值,则用默认值。 --- 2016.11.28 20:52 #129 这里的Theme 和我的一样--一组GAttributors 用于不同类型的控件及其状态。但你已经提出了代码员实现透明化的第一步--为特定的控件添加函数以改变其渲染属性(SetBgColor等)。基本上我同意,它将清楚它有什么颜色,什么可以改变。那么这样一个问题--Theme是否意味着未使用的参数的冗余? 假设在我的基本GAttribBase中,对于某些控件(例如按钮),我们只使用背景颜色 和尺寸,而其他参数--边框厚度等在这个控件中没有使用。也就是说--你是否有一个适用于所有控件的基础元素?在那里存储 "适用于所有情况 "的信息,还是所有的控件都只有自己的参数而没有通用性的开销? Anatoli Kazharski 2016.11.28 21:17 #130 o_O:...总的来说--有什么想法可以让程序员不需要处理颜色(这样它就会使用默认的颜色,在一开始就不需要理会它们)。另一方面--这样,如果他想给屏幕上的某个控制器重新上色,他就不必潜入渲染函数的荒野,找出GAttribBase是在什么情况下使用的。为每个项目设置默认值。如果用户需要改变一些东西,对于每个项目属性,应该有一个方法来设置新的值。我现在是这样做的。我还没有这个东西。如果你需要在 "两个计数 "中改变所有元素的属性,那么只需在所有界面元素都可以访问的那个类中创建单独的方法(用于设计相关的、适用于所有元素的共同属性)。原则上,我已经可以看到如何在我的模式中实现这一点。例如,通过活动。但随后在每个元素的事件处理程序中,你需要处理这个事件(代码很臃肿)。第二个选择,在一个处理普通GUI事件的类中创建一个特殊的公共方法,甚至更高,所有指向GUI元素的指针都存储在这里。它们都是自定义MQL-应用类的基类,用户将可以直接访问它们。它可以是类似于MQL中的 重载 ObjectSet 方法(例如ElementSet),其中(1)属性和值或(2)属性、修改器和值必须被指定。但所有这些都是我关于我的计划的推理。我不排除当我开始过渡时,它仍然会有很大的变化。所以我上面写的一切可能不再与这里讨论的话题有关。) 1...67891011121314151617181920...45 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
对我来说,创建一个产品开发团队更容易,其成员在商定的程度上,将从产品销售中获得利润(也许有人是项目的思想家,有人为股份提供资金,有人是程序员)。
而且,由于每个人都有经济上的动力,所以也要把接口的必要库作为项目的一部分来实现。
对我来说,创建一个产品开发团队更容易,其成员在商定的程度上,将从产品销售中获得利润(也许有人是项目的思想家,有人为股份提供资金,有人是程序员)。
而且由于所有的人都有经济上的动机--在项目内实施,并为接口提供必要的库。
我看了这个主题,还是不明白为什么有必要在Canvas上从头画一个按钮。你能不带感情地解释吗?
,因为MT开发者不是万能的,用琐碎的请求来打扰他们是很耗时间的。
为什么它可能会派上用场。
1.位图上的界面是快速的。如此之快,以至于它几乎与系统中的那个没有区别。例如,我已经实现了带有梯度的半透明元素,即使它们移动,也能顺利渲染,没有可见的延迟,同时考虑到其他带有半透明梯度的对象上的颜色混合和alpha通道计算。
2.该接口是可扩展的。你可以使应用程序更加复杂,它不会因为删除和创建大量的图对象而变慢。重绘的成本是最低的,它只是在千分之一秒内更换一张图片。
3.可以创建现成的控件,也可以创建新的控件,因为你可以提供自己的事件池,比如说。
OnMouseDown - 按住LKM
OnMouseUp - 按下LKM
OnMouseHoverOn - 将鼠标光标悬停在一个物体上。
OnMouseHoverOut - 将鼠标指针从对象上移开
OnMouseClick - 在对象边界内按下并点击。
OnMouseDblClick - 鼠标在对象的边界内双击。
OnDragStart - 在按下鼠标左键开始移动时发生一次事件。
OnDragMove - 用鼠标左键移动时产生的事件
OnDragEnd - 使用LKM移动后产生的事件
OnPut - 对象被投向另一个对象
OnGet - 对象被转储为另一个对象
OnFocus - 对象获得焦点
OnBlur - 对象失去焦点
OnResize - 对象已经改变了尺寸
OnParentResize - 父对象已经改变了尺寸
OnKeyPress - 一个键被按下
OnChange - 一个字段的值改变了
等。
为什么它可能会派上用场。
1.位图上的界面是快速的。速度之快,几乎与系统界面无异。例如,我已经实现了带有梯度的半透明元素,即使它们移动,也能顺利渲染,没有任何可见的延迟,考虑到其他带有半透明梯度的对象上的颜色混合和alpha通道计算。
2.该接口是可扩展的。你可以使应用程序更加复杂,它不会因为删除和创建大量的图对象而变慢。重绘的成本是最低的,它只是在千分之一秒内更换一张图片。
3.可以创建现成的控件,也可以创建新的控件,因为你可以提供自己的事件池,比如说。
OnMouseDown - 按住LKM
OnMouseUp - 按下LKM
OnMouseHoverOn - 将鼠标光标悬停在一个物体上。
OnMouseHoverOut - 将鼠标指针从对象上移开
OnMouseClick - 在对象边界内按下并点击。
OnMouseDblClick - 鼠标在对象的边界内双击。
OnDragStart - 在按下鼠标左键开始移动时发生一次事件。
OnDragMove - 用鼠标左键移动时产生的事件
OnDragEnd - 使用LKM移动后产生的事件
OnPut - 对象被投向另一个对象
OnGet - 对象被转储为另一个对象
OnFocus - 对象获得焦点
OnBlur - 对象失去焦点
OnResize - 对象的尺寸已经改变
OnParentResize - 父对象已经改变了尺寸
OnKeyPress - 一个键被按下
OnChange - 一个字段的值改变了
等。
详尽无遗,谢谢你!
@Igor Volodin,@Combinator,@Anatoli Kazharski
我先说说疮疤的问题)。
我最关心的问题是存储渲染参数的某种通用性/抽象性。
----
据我们了解,所有的控件都同样使用字体、背景颜色和文本颜色等。
当所有这些参数对所有的控件都是一样的时候,那么界面就会有一个共同的外观,有一个单一的概念。
但如何存储它们呢?因为控件并不总是使用所有的参数。
+ 这个系统很复杂,因为元素有不同的状态,应该以不同的方式使用字体和背景颜色。它们是激活、禁用、结束或选择等。
+ 有几组控制器--解脱(如Button)和输入字段(如Edit、List),什么时候是渲染它们的背景?
----
在目前的工作思路中,我有一个GAttribBase类的 最小属性元素,它包含5个基本参数(字体/大小,背景/边界颜色,边界大小)。
这些基础元素被用来形成一个数组,用于GAttribut类的 状态(激活/取消/结束/选择,等等)。
然后为不同的元素类型填充GAttribut--浮雕、可编辑等。
因此,我们只需填写一次渲染参数(我们将它们存储在xml中),它们可以被编辑,以创建不同的设计,我们在全局范围内使用它们,而不需要为每个控制器定义它们。
当然,如果某些控制器需要定义自己的渲染参数--只要在控件中创建自己的GAttributribut对象并指定所需的颜色即可。
----
这种模式是有效的,统一的设计很快就实现了,所有的控件都从公共阵列中获取颜色。
但在我看来,这并不普遍。用户不了解基础GAttribBase的哪些参数被用于渲染这个或那个控件。
要让编码员确切地知道要改变什么颜色,他就必须研究控件的渲染功能。 这真的很麻烦。
-----
总之,有什么想法可以让编码者摆脱颜色管理(直接使用预定义的颜色,在一开始就不去管它们)。
另一方面,如果他想给屏幕上的一些控件重新上色,他不必调查在什么情况下使用什么GAttribBase。
@Igor Volodin,@Combinator,@Anatoli Kazharski
总的来说--你有什么想法,一方面让编码者摆脱色彩工作(这样它就可以直接使用铺设好的颜色,而不需要在一开始就对它们进行处理)。
而另一方面,如果他们想给屏幕上的一些控件重新上色,他们可以不用进入绘图函数的迷宫,搜索什么GAttribBase在什么情况下使用。
好了,主题。
例如,我们应用程序的主对象,让我们称之为App,与ConcreteTheme对象相关联。
什么是主题对象。
颜色(背景、前景、禁用、激活等)、基本尺寸、标准情况下的字体大小:标题大小、普通大小等。为:面板、按钮、复选框等提供精灵。
一个新的主题是一个新的类/结构,其值已经改变。但更好的是,主题可以通过只重写某些参数来继承。
其余的 - 控件的层次结构,其中每个控制器默认使用对象主题的必要值之一。如果它需要覆盖这个,我们就调用一个方法来处理这个属性,指定新的值。
例如,SetBgColor(XRGB(255,0,128))。
CView - 一个提供基本的基于事件的交互的基本类
- CRect - 坐标
- Cpanel有一个bgcolor
- CB按钮有一个状态对象,每个状态都有bg
- CText有一个文本颜色和字体属性
- 循环
以此类推。
如果你想用xml来描述这些元素。
然后对于每个类的控件或基元,我们需要创建一个生成类,我们称之为 "build-container",它将把属性(bgcolor="(255,0,128)")映射到类的相应方法(SetBgColor(attrValue))。这样的构建容器将被XML解析器解析,输出将是一个用所需值初始化的对象,如果没有指定值,则用默认值。
这里的Theme 和我的一样--一组GAttributors 用于不同类型的控件及其状态。
但你已经提出了代码员实现透明化的第一步--为特定的控件添加函数以改变其渲染属性(SetBgColor等)。
基本上我同意,它将清楚它有什么颜色,什么可以改变。
那么这样一个问题--Theme是否意味着未使用的参数的冗余?
假设在我的基本GAttribBase中,对于某些控件(例如按钮),我们只使用背景颜色 和尺寸,而其他参数--边框厚度等在这个控件中没有使用。
也就是说--你是否有一个适用于所有控件的基础元素?在那里存储 "适用于所有情况 "的信息,还是所有的控件都只有自己的参数而没有通用性的开销?
...
总的来说--有什么想法可以让程序员不需要处理颜色(这样它就会使用默认的颜色,在一开始就不需要理会它们)。
另一方面--这样,如果他想给屏幕上的某个控制器重新上色,他就不必潜入渲染函数的荒野,找出GAttribBase是在什么情况下使用的。
为每个项目设置默认值。如果用户需要改变一些东西,对于每个项目属性,应该有一个方法来设置新的值。我现在是这样做的。
我还没有这个东西。
但所有这些都是我关于我的计划的推理。我不排除当我开始过渡时,它仍然会有很大的变化。所以我上面写的一切可能不再与这里讨论的话题有关。)