欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

CRect 和 CCanvas 替换(标准库 - 修复了几个错误) - MetaTrader 5 的库

author emer | 552 人阅读 | 0 人评论 |

当您开始使用标准库在像素基础上工作时,您很快就会发现,有时到处都会丢失一个像素。这种奇怪的行为主要是由 CRect 类中的几个错误引起的。这里的主要问题是,原始类在计算矩形的高度和宽度时失败了,这影响了几乎所有从 CWnd 派生的类,因为 CWnd 在图形上基于 CRect。

在原始CRect中,宽度计算如下:

宽度 = x2 - x1

这是完全错误的。当您创建从 0,0 到 10,10 的任何矩形对象时,该对象的宽度为 11 像素,而不是 10 像素。因此,正确答案是

宽度 = x2 - x1 +1

在标准库的其他一些类中,有时计算正确,但并不总是正确(即在 CCanvas 中创建和寻址内存中的资源时,但在填充矩形时则不然)。无论如何,这是一种不一致的行为,应该予以纠正。

现在可以使用 == != >= <= > < 等普通运算符来比较两个矩形

而不是编码

如果(矩形1.左==矩形2.左&&矩形1.顶部==矩形2.矩形顶部&&矩形1.右==矩形2.矩形右&&矩形1.底部==矩形2.底部)

你现在只需输入

如果(矩形1==矩形2)

此外,还支持 ++、--、+ 等一元运算符,并扩展或膨胀矩形。

建议:


附件下载

📎 rect.mqh (12.53 KB)

📎 canvas.mqh (82.83 KB)

Source: MQL5 #13936

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录