程序库: Easy Canvas - 页 17 1...10111213141516171819 新评论 Alexey Volchanskiy 2024.02.05 10:26 #161 Nikolai Semko #: 最新版本 1.53 尼古拉斯,我刚下载了这个库,会试试的,非常有趣,谢谢!而在 kodobase 的 ZIP 文件中,仍然是旧版本 1.09!!!!!还好我看了评论,直接下载了。如果我是你,我一定会在MT5, mql5, mql5.com 线程中发布关于这个突出错误的改进建议! MT5, mql5, mql5.com предложения по улучшению. - Сделайте реалистичные предложения по улучшению платформы MT5, языка mql5 и сайта и услуг Mql5 Com. 2013.06.15 www.mql5.com удерживая клавишу CTRL при перетаскивании точки привязки. Модифицировать OnChartEvent для обработки нажатия на кнопку. Всплывающее окно появляется автоматически после третьего символа или вы можете вызвать его с помощью CTRL SPACE Nikolai Semko 2024.02.05 21:10 #162 Alexey Volchanskiy #:尼古拉斯,我刚下载了这个库,会试试的,非常有趣,谢谢!在 kodobase 的 ZIP 文件中,还有一个旧版本 1.09!!!!还好我看了评论,直接下载了。如果我是你,我肯定会在MT5, mql5, mql5.com 线程中发布关于这个突出错误的改进建议! 谢谢 Alexey!我已经写了 四年多了。 Petr Vorob'ev 2024.03.06 13:00 #163 尼古拉斯,是否可以使用您的库来绘制与蜡烛绑定的动态变化 "矩形",以取代当前使用的OBJ_RECTANGLE 类型对象。有必要以视觉美观的方式显示矩形的重叠(即存在透明度)。 也许有这样的使用实例? Nikolai Semko 2024.03.06 17:00 #164 Peter Vorobyev OBJ_RECTANGLE 类型对象。有必要以视觉美观的方式显示矩形的重叠(即存在透明度)。 也许有这样的使用实例?当然可以,但这取决于什么情况。 如果矩形数量不多(~<1000),而且不需要经常调整大小,则可以使用标准的 CCanvas。在这种情况下,每个矩形都是与价格-时间坐标绑定的独立画布。 如果对象数量较多,且经常改变属性,则使用该库更为方便。 在这种情况下,您可以创建一个结构数组--具有必要属性的虚拟矩形,并在图表发生变化或您的任何属性发生变化时将其显示在可视图表上。 这是最有效的变体,这里的 kanvas(位图)对象将是一个,在整个屏幕上拉伸。但在垂直和水平滚动时,图表中的图形对象会略微滞后。一个合适的例子或许可以从同一个库Test_iCanvas.mq5 中找到。在这个示例中,有一个半透明矩形,文本与条形图绑定。如果希望半透明矩形在重叠时混合颜色,则需要一个针对此类矩形的函数。如果您需要,我可以帮助您快速完成,或者您也可以使用 iCanvas LineDA 类中的LineHorizontalA 函数自行完成。 ZY 不,Test_iCanvas.mq5 示例不是很合适,因为我通过计时器以错误的方式实现了其中的所有功能。我需要重写这个示例。这是一个让我困惑的笨办法。 好吧,请查看此处 和此处的 更多示例。但在这些示例中,没有按时间计价的绑定。为此,您需要使用 X 和 Y函数 将价格-时间坐标转换为 XY 坐标。 Petr Vorob'ev 2024.03.06 17:34 #165 感谢您的详细解答。,您是否计划在您的程序库中实现一个对象--矩形,允许绘制 具有指定属性的矩形(创建/移动/修改),就像通常的图形对象一样? Nikolai Semko 2024.03.06 18:18 #166 Peter Vorobyev 绘制 具有指定属性的矩形(创建/移动/修改)? 您的意思不是很清楚。 绘制矩形有不同的功能。创建、移动和修改就足够了。 是的,您可以在第三方代码中创建任何对象作为结构或类,并在其中使用 iCanvas 或 CCanvas 类编写向屏幕输出的方法,但在图形库中实现所有可能的变化是没有意义的。只有基元才是重要的。当然,我也有自己的扩展函数库。它比这个大很多倍,但除了我,没人能理解它。我是为自己写的。 Petr Vorob'ev 2024.03.06 19:41 #167 Nikolai Semko #:我不太明白你的意思。 绘制矩形有不同的功能。只需创建、移动和修改即可。 是的,您可以在第三方代码中创建任何对象作为结构或类,并在其中使用 iCanvas 或 CCanvas 类编写向屏幕输出的方法,但在图形库中实现所有可能的变化是没有意义的。只有基元才是重要的。当然,我也有自己的扩展函数库。它比这个大很多倍,但除了我,没人能理解它。我是为自己写的。 谢谢,我明白了,等我更详细地了解这个库之后,如果有具体问题,我会问的。 Nikolai Semko 2024.03.06 23:13 #168 Peter Vorobyev #:谢谢,我明白了。在我更详细地了解图书馆之后,如果有具体问题,我会提出来。 这里有一个适合您的 EA 示例: #include <Canvas\iCanvas_CB.mqh> //https://www.mql5.com/zh/code/22164 //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnDeinit(const int reason) {} //+------------------------------------------------------------------+ void OnTick() { Draw(); } //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if (id == CHARTEVENT_CHART_CHANGE || id == CHARTEVENT_MOUSE_MOVE) Draw(); } //+------------------------------------------------------------------+ void Draw() { static uint last = 0; // uint cur = GetTickCount(); // 性能优化所必需 if (cur-last<25) return; // 对测试人员尤为重要 last = cur; // if (Canvas.tester) ChartChanged(); // 在测试仪中正确运行。 Canvas.Erase(0x00FFFFFF); // 为了正确输出字体,需要这样的掩码 Canvas.CurentFont("Calibri Light", 16,16,0xFF000000); for (int shift = -1000; shift<=1000; shift+=50 ) { uint clr = (Canvas.Grad((shift+1000.0)/2000.0) & 0x00FFFFFF)|0x40000000; int bar = Round(Canvas.Bar(double(_MouseX+shift))); double price = iHigh(_Symbol,PERIOD_CURRENT,bar); int x = int(Canvas.X(double(bar))); int y = (int)_Y(price); Canvas.FillRectangleA(x,y,x+150,y-60,clr); _CommXY(x+5,y-55,"high = "+DoubleToString(price,_Digits)); _Comment("bar = "+(string)bar); _Comment("time = " + TimeToString(iTime(_Symbol,PERIOD_CURRENT,bar))); } Canvas.Update(); } 需要 iCanvas 1.54 版本才能运行。 附加的文件: Test_iCanvas2.mq5 5 kb iCanvas_CB.mqh 73 kb Edgar Akhmadeev 2024.03.06 23:52 #169 Nikolai Semko #:运行需要 iCanvas 1.54 版本 Nikolai Semko#: 最新版本 1.53 我也很感兴趣。 Nikolai Semko 2024.03.06 23:55 #170 Edgar Akhmadeev #:我也在想同样的问题。 已更新并附在上一个帖子中 1...10111213141516171819 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
最新版本 1.53
尼古拉斯,我刚下载了这个库,会试试的,非常有趣,谢谢!而在 kodobase 的 ZIP 文件中,仍然是旧版本 1.09!!!!!还好我看了评论,直接下载了。如果我是你,我一定会在MT5, mql5, mql5.com 线程中发布关于这个突出错误的改进建议!
尼古拉斯,我刚下载了这个库,会试试的,非常有趣,谢谢!在 kodobase 的 ZIP 文件中,还有一个旧版本 1.09!!!!还好我看了评论,直接下载了。如果我是你,我肯定会在MT5, mql5, mql5.com 线程中发布关于这个突出错误的改进建议!
谢谢 Alexey!
我已经写了 四年多了。
也许有这样的使用实例?
当然可以,但这取决于什么情况。
如果矩形数量不多(~<1000),而且不需要经常调整大小,则可以使用标准的 CCanvas。在这种情况下,每个矩形都是与价格-时间坐标绑定的独立画布。
如果对象数量较多,且经常改变属性,则使用该库更为方便。
在这种情况下,您可以创建一个结构数组--具有必要属性的虚拟矩形,并在图表发生变化或您的任何属性发生变化时将其显示在可视图表上。
这是最有效的变体,这里的 kanvas(位图)对象将是一个,在整个屏幕上拉伸。但在垂直和水平滚动时,图表中的图形对象会略微滞后。
一个合适的例子或许可以从同一个库Test_iCanvas.mq5 中找到。在这个示例中,有一个半透明矩形,文本与条形图绑定。如果希望半透明矩形在重叠时混合颜色,则需要一个针对此类矩形的函数。如果您需要,我可以帮助您快速完成,或者您也可以使用 iCanvas LineDA 类中的LineHorizontalA 函数自行完成。
ZY 不,Test_iCanvas.mq5 示例不是很合适,因为我通过计时器以错误的方式实现了其中的所有功能。我需要重写这个示例。这是一个让我困惑的笨办法。好吧,请查看此处 和此处的 更多示例。但在这些示例中,没有按时间计价的绑定。为此,您需要使用 X 和 Y函数 将价格-时间坐标转换为 XY 坐标。
,您是否计划在您的程序库中实现一个对象--矩形,允许绘制 具有指定属性的矩形(创建/移动/修改),就像通常的图形对象一样?
您的意思不是很清楚。
绘制矩形有不同的功能。创建、移动和修改就足够了。
是的,您可以在第三方代码中创建任何对象作为结构或类,并在其中使用 iCanvas 或 CCanvas 类编写向屏幕输出的方法,但在图形库中实现所有可能的变化是没有意义的。只有基元才是重要的。当然,我也有自己的扩展函数库。它比这个大很多倍,但除了我,没人能理解它。我是为自己写的。
我不太明白你的意思。
绘制矩形有不同的功能。只需创建、移动和修改即可。
是的,您可以在第三方代码中创建任何对象作为结构或类,并在其中使用 iCanvas 或 CCanvas 类编写向屏幕输出的方法,但在图形库中实现所有可能的变化是没有意义的。只有基元才是重要的。当然,我也有自己的扩展函数库。它比这个大很多倍,但除了我,没人能理解它。我是为自己写的。
谢谢,我明白了,等我更详细地了解这个库之后,如果有具体问题,我会问的。
谢谢,我明白了。在我更详细地了解图书馆之后,如果有具体问题,我会提出来。
这里有一个适合您的 EA 示例:
需要 iCanvas 1.54 版本才能运行。
运行需要 iCanvas 1.54 版本
最新版本 1.53
我也很感兴趣。
我也在想同样的问题。