程序库: Easy Canvas - 页 8 123456789101112131415...19 新评论 Oleksii Chepurnyi 2020.02.15 08:30 #71 Nikolai Semko:重命名并不难。有 Ctrl+H但我同意 Andrei 的观点。查找#define T 或 #include <Canvas\iCanvas.mqh> 将其放在项目的首位 文件搜索是自动进行的 ) MQL5 文件夹中没有#define T。 我发现这与 TradeTransactionshttps://www.mql5.com/zh/code/22166 中的 TypeToBytes.mqh 有冲突。 这个库已经很久没有修改过了,所以很可能在某个新版本中出现了一些创新或错误 ) fxsaber 2020.02.15 09:09 #72 Oleksii Chepurnyi:设法找出冲突是与 TradeTransactionshttps://www.mql5.com/zh/code/22166 的 TypeToBytes.mqh 中的某些内容有关。这个库已经很久没有修改过了,所以很可能在某个新版本中出现了一些新功能或错误 ) 这是一个编译器错误。 #include <TypeToBytes.mqh> //https://www.mql5.com/zh/code/16282 class CLASS { void Method() { datetime T[1]; T[0] = 0; // '[' - 预期名称 }; }; void OnStart() { datetime T[1]; T[0] = 0; // 确定 } Nikolai Semko 2020.02.15 13:01 #73 知道了谢谢当然,我会修好它的。 Andrey Khatimlianskii 2020.02.16 22:49 #74 耶,我们找到了!) @fxsaber,您是自动跟踪 "您的 "关键词的分支,还是定期浏览所有分支?您对 "有针对性的 "问题回复非常快。 fxsaber 2020.02.17 00:43 #75 Andrey Khatimlianskii:@fxsaber,你是自动跟踪 "你的 "关键词的分支,还是定期浏览所有分支?您回答 "有针对性 "的问题非常快。 这是偶然发生的。 Nikolai Semko 2020.02.17 05:15 #76 我想向感兴趣的程序员解释一下测试模式下 kanvas 操作的一个重要问题。 本社区的一位著名程序员向我提出了这样一个问题: - 为什么在测试模式下,在对象上创建的面板的重绘速度要比在 kanvas 上实现的快一个数量级,而在正常模式下,kanvas 的速度一切正常? 经过分析,我明白了这个问题的原因和解决办法。 问题在于,在重绘对象的同时也会重绘整个屏幕,而测试仪中重绘屏幕的频率不会超过每秒 30 帧。 对象的画布(内部)最终是相同的,但当您更改对象的属性 时,对象的画布不会形成(不会重 新计算),而只会在屏幕刷新(ChartRedraw)时形成,这在测试仪中(在正常模式下也是)发生的 频率不会超过我们眼睛所能分辨的变化频率,即不会超过每秒 32 帧。 假设面板每隔一个刻度都会发生变化。那么在默认测试器中,画布将每隔一个刻度重新计算一次,但测试器中的重绘频率仍不会超过 30 毫秒(每秒约 30 帧)。 换句话说,重新计算画布的频率要比实际显示在屏幕上的频率高得多,因此会过度消耗资源。 解决这个问题的方法是控制画布的重新计算和重新绘制频率,每 15-30 毫秒的计算机时间内不能超过一次,这样就不会出现不必要的空重复计算周期。 例如 void OnTick() { static uint lastCalc=0; uint cur=GetTickCount(); if (cur-lastCalc>15) { ReDrawMyCanvas(); lastCalc=cur; } } Oleksii Chepurnyi 2020.11.09 14:43 #77 下午好。 if(width==0) {width=W.Width; FullWinCanvW=true; Xpos=0;} else FullWinCanvW=false; if(height==0){height=W.height[SubWin]; FullWinCanvH=true; Ypos=0;} else FullWinCanvH=false; Name+=IntegerToString(rand())+IntegerToString(rand()); Handle=ChartGetInteger(chart_id,CHART_WINDOW_HANDLE,SubWin); if(!CreateBitmapLabel(chart_id,SubWin,Name,Xpos,Ypos,width,height,formatCF)) Print("Error creating canvas: ",GetLastError()); 构造函数中的这一行,为什么? CCanvas 还在名称中添加了很多内容,包括 rand。有时名称太长,超过了允许长度 ) Nikolai Semko 2020.11.09 19:45 #78 Oleksii Chepurnyi:下午好。构造函数中的这一行,为什么? CCanvas 还在名称中添加了很多内容,包括 rand。有时名称太长,超过了允许长度 ) 是的,我同意。 在我的 iCanvas 版本中,我已经解决了这个问题,但在这里我似乎忘记了。 Nikolai Semko 2020.11.10 02:01 #79 版本 1.40 修正了一些错误。 特别是修正了一个错误:如果有多个对象,iCanvas 对象不会自动垂直调整大小。 Nikolai Semko 2020.11.10 02:05 #80 最新版本 1.40 附加的文件: iCanvas.mqh 48 kb 123456789101112131415...19 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
重命名并不难。有 Ctrl+H
但我同意 Andrei 的观点。查找#define T 或 #include <Canvas\iCanvas.mqh> 将其放在项目的首位
文件搜索是自动进行的 ) MQL5 文件夹中没有#define T。
我发现这与 TradeTransactionshttps://www.mql5.com/zh/code/22166 中的 TypeToBytes.mqh 有冲突。
这个库已经很久没有修改过了,所以很可能在某个新版本中出现了一些创新或错误 )
设法找出冲突是与 TradeTransactionshttps://www.mql5.com/zh/code/22166 的 TypeToBytes.mqh 中的某些内容有关。
这个库已经很久没有修改过了,所以很可能在某个新版本中出现了一些新功能或错误 )
这是一个编译器错误。
耶,我们找到了!)
@fxsaber,您是自动跟踪 "您的 "关键词的分支,还是定期浏览所有分支?您对 "有针对性的 "问题回复非常快。
@fxsaber,你是自动跟踪 "你的 "关键词的分支,还是定期浏览所有分支?您回答 "有针对性 "的问题非常快。
这是偶然发生的。
我想向感兴趣的程序员解释一下测试模式下 kanvas 操作的一个重要问题。
本社区的一位著名程序员向我提出了这样一个问题:
- 为什么在测试模式下,在对象上创建的面板的重绘速度要比在 kanvas 上实现的快一个数量级,而在正常模式下,kanvas 的速度一切正常?
经过分析,我明白了这个问题的原因和解决办法。
问题在于,在重绘对象的同时也会重绘整个屏幕,而测试仪中重绘屏幕的频率不会超过每秒 30 帧。
对象的画布(内部)最终是相同的,但当您更改对象的属性 时,对象的画布不会形成(不会重 新计算),而只会在屏幕刷新(ChartRedraw)时形成,这在测试仪中(在正常模式下也是)发生的 频率不会超过我们眼睛所能分辨的变化频率,即不会超过每秒 32 帧。
假设面板每隔一个刻度都会发生变化。那么在默认测试器中,画布将每隔一个刻度重新计算一次,但测试器中的重绘频率仍不会超过 30 毫秒(每秒约 30 帧)。
换句话说,重新计算画布的频率要比实际显示在屏幕上的频率高得多,因此会过度消耗资源。
解决这个问题的方法是控制画布的重新计算和重新绘制频率,每 15-30 毫秒的计算机时间内不能超过一次,这样就不会出现不必要的空重复计算周期。
例如
下午好。
构造函数中的这一行,为什么?
CCanvas 还在名称中添加了很多内容,包括 rand。有时名称太长,超过了允许长度 )
下午好。
构造函数中的这一行,为什么?
CCanvas 还在名称中添加了很多内容,包括 rand。有时名称太长,超过了允许长度 )
是的,我同意。
在我的 iCanvas 版本中,我已经解决了这个问题,但在这里我似乎忘记了。
修正了一些错误。
特别是修正了一个错误:如果有多个对象,iCanvas 对象不会自动垂直调整大小。