程序库: Easy Canvas - 页 13 1...678910111213141516171819 新评论 Oleksii Chepurnyi 2020.12.29 05:49 #121 Mighty7:擦除所有背景、构建和粉刷新的一切都需要很长时间。 没那么长。构建可能需要很多时间。 我们将状态(元素的位置、颜色等)保存在内存中,如果需要移动某个元素,只需更改其坐标,擦除画布并绘制新的状态。从视觉上看,即使有很多元素,它也能以闪电般的速度运行。) Nikolai Semko 2020.12.29 06:57 #122 Mighty7:这行不通,因为我的画布是全屏的。它就像一个刻度线图,但要擦除整个背景和构造并绘制新的一切,需要花费太多时间,因此我需要将内容向左移动(例如 8 像素),然后只在新的 8 像素(X 方向 8 px,全高)上绘制新的数据。我试着用 MoveCanvas 将画布向左移动 8 px,这样做是可行的,但我无法调整画布的大小,即从左边移去 8 px 宽度,而在右边增加 8 px。希望您能理解... Mighty7: 这行不通,因为我的画布是全屏的。这就像一个刻度线图,但要擦除整个背景并构建和绘制所有新内容需要花费大量时间,因此我需要将内容向左移动(例如 8 像素),然后只在新的 8 像素(X 方向 8 px 且全高)上绘制新数据。我试着用 MoveCanvas 将画布向左移动 8 px,这样做是可行的,但我无法调整画布的大小,即从左边移去 8 px 宽度,而在右边增加 8 px。希望您能理解... 好了,完成。下载 1.42 版。 但您需要控制垂直调整大小。 好了,完成。自己下载 1.42 版。 但您需要控制 垂直比例的变化。 #include <Canvas\iCanvas.mqh> //https://www.mql5.com/zh/code/22164 input int shift = -1; //+------------------------------------------------------------------+ int OnInit() { EventSetMillisecondTimer(100); Canvas.Erase(0x00FFFFFF); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnTimer() { Canvas.FillCircle(rand()%_Width,rand()%_Height, 10+rand()%100,Canvas.Grad(rand()/32767.0)&0x80FFFFFF); Canvas.ShiftCanvas(shift); Canvas.Update(); } //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { return(rates_total); } void ShiftCanvas(const int _shift=-1, uint bckgr = 0x00FFFFFF) { // 将整个画布向左移动(x 为负值)或向右移动(x 为负值)。 // 右移(x 为正值)。画布本身保持不变,但所有像素都会移动。bckgr 为 // 根据移动的方向,向左或向右填充新创建条纹的颜色。 if (_shift==0) return; int _Shift = Fabs(_shift); if (_Shift>=m_width) { ArrayInitialize(m_pixels,bckgr); return;} int start = (_shift>0)?0:-_shift; int count = m_width-_Shift; int offset= (_shift>0)?0:count; for (; start<m_height*m_width; start+=m_width, offset+=m_width) { ArrayCopy(m_pixels,m_pixels,start+_shift,start,count); ArrayFill(m_pixels,offset,_Shift,bckgr); } } 附加的文件: iCanvas.mqh 50 kb TestShiftCanvas.mq5 2 kb Mighty7 2020.12.29 19:44 #123 太好了非常感谢 Nikolai Semko 2020.12.30 00:02 #124 Mighty7: 太好了非常感谢 没问题 😊 Mighty7 2021.01.01 19:37 #125 Nikolai Semko: 没问题 😊 它的工作原理很简单,但要使其完整,是否有可能在 Y 轴(北/南)上也实现移位?我也需要在这些方向上滚动/移动。 Nikolai Semko 2021.01.01 21:35 #126 Mighty7:它的工作原理与字符集类似,但要使其完整,是否有可能在 Y 轴(北/南)上也实现移位?我也需要在这些方向上滚动/移动。 好的。我会做到的。 Nikolai Semko 2021.01.02 04:19 #127 Mighty7:它的工作原理与字符集类似,但要使其完整,是否有可能在 Y 轴(北/南)上也实现移位?我也需要在这些方向上滚动/移动。 已完成 版本 1.43 附加的文件: TestShiftCanvas.mq5 2 kb iCanvas.mqh 54 kb Mighty7 2021.01.04 11:47 #128 Nikolai Semko : 濑户 siehe 1.43 绝对精彩。非常感谢。 编辑:x=-1,y=0 没有移动,因此无法正常工作。 Nikolai Semko 2021.01.04 22:08 #129 Mighty7: 绝对精彩。非常感谢。 编辑:x=-1,y=0 没有移位,所以不能正常工作。 谢谢。已修复。 附加的文件: iCanvas.mqh 52 kb Mighty7 2021.01.05 01:28 #130 Nikolai Semko:谢谢。已更正。 我得说谢谢现在完美了。干得好 1...678910111213141516171819 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
擦除所有背景、构建和粉刷新的一切都需要很长时间。
没那么长。构建可能需要很多时间。
我们将状态(元素的位置、颜色等)保存在内存中,如果需要移动某个元素,只需更改其坐标,擦除画布并绘制新的状态。从视觉上看,即使有很多元素,它也能以闪电般的速度运行。)
这行不通,因为我的画布是全屏的。它就像一个刻度线图,但要擦除整个背景和构造并绘制新的一切,需要花费太多时间,因此我需要将内容向左移动(例如 8 像素),然后只在新的 8 像素(X 方向 8 px,全高)上绘制新的数据。我试着用 MoveCanvas 将画布向左移动 8 px,这样做是可行的,但我无法调整画布的大小,即从左边移去 8 px 宽度,而在右边增加 8 px。希望您能理解...
这行不通,因为我的画布是全屏的。这就像一个刻度线图,但要擦除整个背景并构建和绘制所有新内容需要花费大量时间,因此我需要将内容向左移动(例如 8 像素),然后只在新的 8 像素(X 方向 8 px 且全高)上绘制新数据。我试着用 MoveCanvas 将画布向左移动 8 px,这样做是可行的,但我无法调整画布的大小,即从左边移去 8 px 宽度,而在右边增加 8 px。希望您能理解...
好了,完成。下载 1.42 版。
但您需要控制垂直调整大小。
好了,完成。自己下载 1.42 版。
但您需要控制 垂直比例的变化。
太好了非常感谢
没问题 😊
它的工作原理很简单,但要使其完整,是否有可能在 Y 轴(北/南)上也实现移位
?我也需要在这些方向上滚动/移动。
它的工作原理与字符集类似,但要使其完整,是否有可能在 Y 轴(北/南)上也实现移位
?我也需要在这些方向上滚动/移动。
好的。我会做到的。
它的工作原理与字符集类似,但要使其完整,是否有可能在 Y 轴(北/南)上也实现移位
?我也需要在这些方向上滚动/移动。
已完成
版本 1.43
濑户
siehe 1.43
绝对精彩。非常感谢。
编辑:x=-1,y=0 没有移动,因此无法正常工作。
绝对精彩。非常感谢。
编辑:x=-1,y=0 没有移位,所以不能正常工作。
谢谢。已修复。
谢谢。已更正。
我得说谢谢现在完美了。干得好