帆布很酷! - 页 64 1...575859606162636465666768697071...93 新评论 Nikolai Semko 2020.10.26 12:36 #631 Vladimir Pastushak:大家好,我想加深我对Canvas的了解我甚至不知道该从何说起。现在我在想象,Canvas是复杂的对数公式之类的东西。你能给我一个例子,如何在画布上做一个像下面这样的按钮。我需要一些代码来理解它。 关于交易、自动交易系统和策略测试的论坛 在Canvas上制作一个众包项目 Nikolai Semko, 2017.05.24 02:20 以下是所得到的结果。 该按钮可以显示在背景后面和前台,设置为点击锁定或不锁定。 在示例文件CanvasButton.mq5中,可以用鼠标拖动按钮。要做到这一点,只需按住Ctrl键来移动蓝色按钮,按住Shift键来移动红色按钮。 因为GButton类是CCanvas类的后裔,这个例子演示了在CircleWu例子上使用CCanvas类的功能的能力(这在OnInit中实现)。因此,可以使用CCanvas类的函数在按钮上写文字。 当然,这门课并不假装是干净的。画面并不完美,3D也很传统;阴影没有实现,执行速度也没有优化。而且很可能有很多粗糙的边缘,缺乏各种检查。因此,不要严厉地评判。 如果你多花一点时间,当然可以做到。 我只是想...你可以说--确定方向。 Canvas.mqh文件与原来的不同之处在于,m_pixels数组被定义为公共的。 Codexample 2021.01.27 09:24 #632 当然,尼古拉是对他热衷于实验帆布的尊重。而我在研究代码实例时,也有不小的收获。当然,在目前的实现中,Canvas纯粹是用图形基元填充位图阵列的CPU约束算法。即通过带有数组元素枚举的循环来进行 就这些了...同时,这也是21年前...实验当然是好的,但用于实际目的的实施不仅要漂亮,而且要有效。因为我当然可以忽略它坐在一些顶级的8核PC上,但作为一项规则,主要的大众用户拥有相当中等的PC。任何带有市场数据可视化的全屏GUI,即使它非常方便和漂亮,也不会受到欢迎,如果它的CPU负载高达75%。这是一个事实。这就是为什么,而不是因为他们根本无事可做--硬件加速被带入所有主要浏览器的Canvas实现。 说到核心--在MQL5中应该有一些Direct2D(和DirectWrite)的包装器--这将是一个真正的炸弹,为GUI和数据可视化领域许多实际任务的有效硬件加速实现开辟道路。当然,你可以说,已经有了DirectX。但只有它的Direct3D部分有代表,那就是3D投影、着色器和其他3D的属性,而且它的实际用途还是相当狭窄的利基。是的,当然你可以通过一些调整投影和其他操作以及镶嵌实现渲染2D图形和通过Direct3D--但这并不意味着在Direct3D上创建你自己的Direct2D实现。这就没有任何意义了,因为Direct2D在很久以前就已经实施了。 所以我有个想法... Renat Fatkhullin 2021.01.27 14:35 #633 也就是说,一切都可以在CPU上快速绘制。上面的例子证明了这一点。另外,这是一个对图像的最终美观和精致程度没有严格要求的应用领域。 Nikolai Semko 2021.01.27 21:31 #634 Codexample:当然,尼古拉是对他热衷于实验帆布的尊重。而我在研究代码实例时,也有不小的收获。不幸的是,Canvas在目前的实现中只不过是用图形基元填充位图数组的受CPU约束的算法。即通过循环与数组元素搜索 就这些了...同时,这也是21年前...实验当然是好的,但用于实际目的的实施不仅要漂亮,而且要有效。因为我当然可以忽略它坐在一些顶级的8核PC上,但作为一项规则,主要的大众用户拥有相当中等的PC。而任何带有市场数据可视化的全屏GUI,即使它非常方便和漂亮,也不会受到欢迎,如果它的CPU负载高达75%。这是一个事实。这就是为什么--而不是因为他们根本无事可做--硬件加速已经被带入所有主要浏览器的Canvas实现。 事实上,在MQL5中会有一些Direct2D(和DirectWrite)的包装,这将是一个真正的炸弹,为GUI和数据可视化领域中许多实际任务的有效硬件加速实现开辟了道路。当然,你可以说,已经有了DirectX。但只有它的Direct3D部分有代表,那就是3D投影、着色器和其他3D的属性,而且它的实际用途还是相当狭窄的利基。是的,当然你可以通过调整投影和其他操作以及镶嵌来实现2D图形的渲染,并通过Direct3D--但这并不意味着在Direct3D上创建你自己的Direct2D实现。这就没有任何意义了,因为Direct2D在很久以前就已经实施了。 这里有一个想法... 谢谢你的好意。 事实上,MQ在这方面做得很好,并且已经使用GPU而不仅仅是CPU来处理图形和计算工具。 我是指OpenCL和DirectX。 下面是在CPU、OpenCL(GPU)和DirectX(GPU)三种变体中比较同一图形任务(8个重力中心)实现的例子。 1.CPU -14 fps。(脚本 Swirl2.mq5) 2.OpenCL--每秒162帧(需要在电脑上安装OpenCL驱动程序)(Swirl2_OCL.mq5脚本)。 3.DirectX--每秒37帧(脚本Swirl2_GPU.mq5)。 所以它不那么忧郁。 如果你需要最大的性能,你也可以使用显卡。 我应该注意到,这些测试是在一台相当弱的笔记本电脑上进行的,它的英特尔® HD Graphics 620 显卡很弱。 虽然使用显卡的力量可以带来非常体面的性能提升,但我同意Renat的观点,即使使用CPU进行图形输出,也能覆盖MQL5任务区中99%以上的图形任务。 只要我的帧在10毫秒内生成,我就不会对GPU感到特别不安(尽管有时诱惑力很大,好在还有回旋余地)。 而在10毫秒内,我可以输出,例如,这样一个带有阴影、抗锯齿和透明的东西。 用于GPU的 SZY代码是从这个主题 下载 的,非常感谢@Rorschach和@Serhii Shevchuk的帮助。 附加的文件: Swirl2.mq5 5 kb Swirl2_OCL.mq5 14 kb Swirl2_GPU.mq5 9 kb Canvas is cool! Nikolay Kositsin 2021.01.28 07:18 #635 朋友们,有人用Canvas插值法对图形资源进行过大小调整吗? Nikolai Semko 2021.01.28 08:04 #636 Nikolay Kositsin: 各位,有没有人在Canvas上用插值法调整过图形资源的大小? 我在这里 举了一个代码的例子。但该代码远非完美。现在的情况会有很大不同。 关于交易、自动交易系统和策略测试的论坛 帆布很酷! Nikolai Semko, 2018.03.24 04:13 光栅缩放脚本演示 有一个相当大的BMP文件作为资源放在Ex5文件中。 Artyom Trishkin 2021.01.28 09:13 #637 Nikolai Semko:我在这里 举了一个代码的例子。但该代码远非完美。如果是我,现在的做法就完全不同了。 我很好奇你现在会怎么做。这符合我的最大利益 :) Vladimir Karputov 2021.01.28 09:54 #638 Nikolai Semko:我在这里 举了一个代码的例子。但该代码远非完美。我现在会以不同的方式做每件事。 它是无法形容的美 :) Renat Fatkhullin 2021.01.28 10:59 #639 OpenCL:https://www.mql5.com/ru/forum/162864 DirectX:标准的Remnant 3D Вот что можно сделать с OpenCL прямо в терминале MetaTrader 5 без всяких DLL 2016.12.10www.mql5.com Это демонстрация не только расчетов на GPU в MQL5 коде, но и графических возможностей терминала: Полный исходный код в виде скрипта приложен... Nikolai Semko 2021.01.28 14:03 #640 Artyom Trishkin:只是想知道你现在会怎么做。纯粹是为了我的最佳利益 :) 很简单,Artem,早些时候我把一个像素看作是一个正方形,通过面积计算它在新比例的像素中的加权参与,但现在我会把它看作是一个圆,通过到新比例的像素中心的距离计算它的加权参与。 1...575859606162636465666768697071...93 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
大家好,我想加深我对Canvas的了解
我甚至不知道该从何说起。现在我在想象,Canvas是复杂的对数公式之类的东西。
你能给我一个例子,如何在画布上做一个像下面这样的按钮。我需要一些代码来理解它。
关于交易、自动交易系统和策略测试的论坛
在Canvas上制作一个众包项目
Nikolai Semko, 2017.05.24 02:20
以下是所得到的结果。
该按钮可以显示在背景后面和前台,设置为点击锁定或不锁定。
在示例文件CanvasButton.mq5中,可以用鼠标拖动按钮。要做到这一点,只需按住Ctrl键来移动蓝色按钮,按住Shift键来移动红色按钮。
因为GButton类是CCanvas类的后裔,这个例子演示了在CircleWu例子上使用CCanvas类的功能的能力(这在OnInit中实现)。因此,可以使用CCanvas类的函数在按钮上写文字。
当然,这门课并不假装是干净的。画面并不完美,3D也很传统;阴影没有实现,执行速度也没有优化。而且很可能有很多粗糙的边缘,缺乏各种检查。因此,不要严厉地评判。
如果你多花一点时间,当然可以做到。
我只是想...你可以说--确定方向。
Canvas.mqh文件与原来的不同之处在于,m_pixels数组被定义为公共的。
当然,尼古拉是对他热衷于实验帆布的尊重。而我在研究代码实例时,也有不小的收获。
当然,在目前的实现中,Canvas纯粹是用图形基元填充位图阵列的CPU约束算法。即通过带有数组元素枚举的循环来进行 就这些了...同时,这也是21年前...
实验当然是好的,但用于实际目的的实施不仅要漂亮,而且要有效。因为我当然可以忽略它坐在一些顶级的8核PC上,但作为一项规则,主要的大众用户拥有相当中等的PC。任何带有市场数据可视化的全屏GUI,即使它非常方便和漂亮,也不会受到欢迎,如果它的CPU负载高达75%。这是一个事实。这就是为什么,而不是因为他们根本无事可做--硬件加速被带入所有主要浏览器的Canvas实现。
说到核心--在MQL5中应该有一些Direct2D(和DirectWrite)的包装器--这将是一个真正的炸弹,为GUI和数据可视化领域许多实际任务的有效硬件加速实现开辟道路。当然,你可以说,已经有了DirectX。但只有它的Direct3D部分有代表,那就是3D投影、着色器和其他3D的属性,而且它的实际用途还是相当狭窄的利基。是的,当然你可以通过一些调整投影和其他操作以及镶嵌实现渲染2D图形和通过Direct3D--但这并不意味着在Direct3D上创建你自己的Direct2D实现。这就没有任何意义了,因为Direct2D在很久以前就已经实施了。所以我有个想法...
当然,尼古拉是对他热衷于实验帆布的尊重。而我在研究代码实例时,也有不小的收获。
不幸的是,Canvas在目前的实现中只不过是用图形基元填充位图数组的受CPU约束的算法。即通过循环与数组元素搜索 就这些了...同时,这也是21年前...
实验当然是好的,但用于实际目的的实施不仅要漂亮,而且要有效。因为我当然可以忽略它坐在一些顶级的8核PC上,但作为一项规则,主要的大众用户拥有相当中等的PC。而任何带有市场数据可视化的全屏GUI,即使它非常方便和漂亮,也不会受到欢迎,如果它的CPU负载高达75%。这是一个事实。这就是为什么--而不是因为他们根本无事可做--硬件加速已经被带入所有主要浏览器的Canvas实现。
事实上,在MQL5中会有一些Direct2D(和DirectWrite)的包装,这将是一个真正的炸弹,为GUI和数据可视化领域中许多实际任务的有效硬件加速实现开辟了道路。当然,你可以说,已经有了DirectX。但只有它的Direct3D部分有代表,那就是3D投影、着色器和其他3D的属性,而且它的实际用途还是相当狭窄的利基。是的,当然你可以通过调整投影和其他操作以及镶嵌来实现2D图形的渲染,并通过Direct3D--但这并不意味着在Direct3D上创建你自己的Direct2D实现。这就没有任何意义了,因为Direct2D在很久以前就已经实施了。这里有一个想法...
谢谢你的好意。
事实上,MQ在这方面做得很好,并且已经使用GPU而不仅仅是CPU来处理图形和计算工具。
我是指OpenCL和DirectX。
下面是在CPU、OpenCL(GPU)和DirectX(GPU)三种变体中比较同一图形任务(8个重力中心)实现的例子。
1.CPU -14 fps。(脚本 Swirl2.mq5)
2.OpenCL--每秒162帧(需要在电脑上安装OpenCL驱动程序)(Swirl2_OCL.mq5脚本)。
3.DirectX--每秒37帧(脚本Swirl2_GPU.mq5)。
所以它不那么忧郁。
如果你需要最大的性能,你也可以使用显卡。
我应该注意到,这些测试是在一台相当弱的笔记本电脑上进行的,它的英特尔® HD Graphics 620 显卡很弱。
虽然使用显卡的力量可以带来非常体面的性能提升,但我同意Renat的观点,即使使用CPU进行图形输出,也能覆盖MQL5任务区中99%以上的图形任务。
只要我的帧在10毫秒内生成,我就不会对GPU感到特别不安(尽管有时诱惑力很大,好在还有回旋余地)。
而在10毫秒内,我可以输出,例如,这样一个带有阴影、抗锯齿和透明的东西。
用于GPU的 SZY代码是从这个主题 下载 的,非常感谢@Rorschach和@Serhii Shevchuk的帮助。
各位,有没有人在Canvas上用插值法调整过图形资源的大小?
我在这里 举了一个代码的例子。但该代码远非完美。现在的情况会有很大不同。
关于交易、自动交易系统和策略测试的论坛
帆布很酷!
Nikolai Semko, 2018.03.24 04:13
光栅缩放脚本演示
有一个相当大的BMP文件作为资源放在Ex5文件中。
我在这里 举了一个代码的例子。但该代码远非完美。如果是我,现在的做法就完全不同了。
我很好奇你现在会怎么做。这符合我的最大利益 :)
我在这里 举了一个代码的例子。但该代码远非完美。我现在会以不同的方式做每件事。
它是无法形容的美 :)
OpenCL:https://www.mql5.com/ru/forum/162864
DirectX:标准的Remnant 3D
只是想知道你现在会怎么做。纯粹是为了我的最佳利益 :)