CRect 和 CCanvas 替换(标准库 - 修复了几个错误) - MetaTrader 5 的库
当您开始使用标准库在像素基础上工作时,您很快就会发现,有时到处都会丢失一个像素。这种奇怪的行为主要是由 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小时后评论,即可解锁附件下载
立即登录
