程序库: 用于创建图形界面的 EasyAndFastGUI 开发库 - 页 14 1...789101112131415161718192021...45 新评论 Oleksii Chepurnyi 2018.12.06 22:42 #131 你好 //+------------------------------------------------------------------+ //| 创建画布用于绘制元素 //+------------------------------------------------------------------+ bool CElement::CreateCanvas(const string name,const int x,const int y, const int x_size,const int y_size,ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_ARGB_NORMALIZE) { //--- 尺寸调整 int xsize =(x_size<1)? 50 : x_size; int ysize =(y_size<1)? 20 : y_size; //--- 重置上次错误 ::ResetLastError(); //--- 创建对象 if(!m_canvas.CreateBitmapLabel(m_chart_id,m_subwin,name,x,y,xsize,ysize,clr_format)) { ::Print(__FUNCTION__," > 创建画布绘制项目失败 (""+m_class_name+"): ",::GetLastError()); return(false); } //--- 重置上次错误 ::ResetLastError(); //--- 获取指向基类的指针 if(!m_canvas.Attach(m_chart_id,name,clr_format)) { ::Print(__FUNCTION__," > 未将绘图画布附加到图表:",::GetLastError()); return(false); } //--- 属性 ::ObjectSetString(m_chart_id,m_canvas.ChartObjectName(),OBJPROP_TOOLTIP,"\n"); ::ObjectSetInteger(m_chart_id,m_canvas.ChartObjectName(),OBJPROP_CORNER,m_corner); ::ObjectSetInteger(m_chart_id,m_canvas.ChartObjectName(),OBJPROP_SELECTABLE,false); //--- 除表单外,所有元素的优先级都高于主元素 Z_Order((dynamic_cast<CWindow*>(&this)!=NULL)? 0 : m_main.Z_Order()+1); //--- 坐标 m_canvas.X(x); m_canvas.Y(y); //--- 尺寸 m_canvas.XSize(x_size); m_canvas.YSize(y_size); //--- 从终点开始缩进 m_canvas.XGap(CalculateXGap(x)); m_canvas.YGap(CalculateYGap(y)); return(true); } CreateBitmapLabel -创建图形资源 附加 - 读取同一资源并再次写入同一资源。 还是我理解错了? Oleksii Chepurnyi 2018.12.13 04:34 #132 又见面了 :) class CMouse { ............... //--- (1) 返回光标所在窗口的编号,(2) X 坐标对应的时间、 // (3) 与 Y 坐标相对应的水平(价格 int SubWindowNumber(void) const { return(m_subwin); } datetime Time(void) const { return(m_time); } double Level(void) const { return(m_level); } 时间和电平在哪里使用?到处都找不到... SubWindowNumber 用来做什么? 我想说的是,每次移动鼠标都要执行ChartXYToTimePrice 操作,成本很高... Anatoli Kazharski 2018.12.13 08:40 #133 Oleksii Chepurnyi:都在评论里了。没什么好补充的。 Oleksii Chepurnyi 2018.12.13 14:03 #134 Anatoli Kazharski:都在评论里了。没有什么需要补充的。如果您指的是代码中的注释,那么一切都很清楚,但这不是问题所在 :) Anatoli Kazharski 2018.12.13 14:14 #135 Oleksii Chepurnyi:...我想说的是,每次移动鼠标都要执行 ChartXYToTimePrice 操作,成本很高...如果图形用户界面不在主窗口中,要获得相对坐标。 Oleksii Chepurnyi 2018.12.13 15:03 #136 Anatoli Kazharski:在图形用户界面不在主窗口中时获取相对坐标。 那么也许只有当图形用户界面不在主窗口中时才能计算?:)我更感兴趣的是为什么要附加?据我所知,它重复了 CreateBitmapLabel 的操作 Anatoli Kazharski 2018.12.13 15:12 #137 Oleksii Chepurnyi: 所以,也许只有当图形用户界面不在主窗口中时才能计算?:)当图形用户界面主窗口位于图表的子窗口中,而对话框位于主窗口中时,也会出现不同的情况。 我更感兴趣的是为什么要 "附加"?据我所知,它重复了 CreateBitmapLabel 的操作。 有一个CCanvas::Attach() 方法的代码: //+------------------------------------------------------------------+ //| 使用位图资源附加新对象 //+------------------------------------------------------------------+ bool CCanvas::Attach(const long chart_id,const string objname,ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA) { if(OBJ_BITMAP_LABEL==ObjectGetInteger(chart_id,objname,OBJPROP_TYPE)) { string rcname=ObjectGetString(chart_id,objname,OBJPROP_BMPFILE); rcname=StringSubstr(rcname,StringFind(rcname,"::")); if(ResourceReadImage(rcname,m_pixels,m_width,m_height)) { m_chart_id=chart_id; m_objname=objname; m_rcname=rcname; m_format=clrfmt; m_objtype=OBJ_BITMAP_LABEL; //--- 成功 return(true); } } //--- 失败 return(false); } Oleksii Chepurnyi 2018.12.13 15:31 #138 Anatoli Kazharski:这里有CCanvas::Attach() 方法的代码:是的,还有 CreateBitmapLabel 上面的代码。我一直在研究它们。据我所知,CreateBitmapLabel 会创建一个空资源,而 Attach 会读取资源(任意)并将其写入 m_pixels。就像我上面写的,我们创建一个 名称为 name 的资源(CreateBitmapLabel),然后读取相同的资源(Attach),并再次将读取的内容写入相同的 m_pixels。 还是我理解错了? PS 在没有 Attach 的情况下,实验结果一切正常:) Anatoli Kazharski 2018.12.13 15:34 #139 Oleksii Chepurnyi:...PS 在没有 Attach 的情况下,一切正常:)真的吗?那么又有一些变化了。以前肯定有什么地方不正常。 从图表中删除图形用户界面后,对象会被删除吗? Oleksii Chepurnyi 2018.12.13 16:19 #140 Anatoli Kazharski:真的吗?又有变化了之前肯定是有什么地方出了问题。从图形中删除图形用户界面后,对象会被删除吗?一切看起来都很干净) 附加的文件: 35.png 11 kb 36.png 6 kb 1...789101112131415161718192021...45 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好
CreateBitmapLabel -创建图形资源
附加 - 读取同一资源并再次写入同一资源。
还是我理解错了?
又见面了 :)
时间和电平在哪里使用?到处都找不到...
SubWindowNumber 用来做什么?
我想说的是,每次移动鼠标都要执行ChartXYToTimePrice 操作,成本很高...
都在评论里了。没什么好补充的。
都在评论里了。没有什么需要补充的。
如果您指的是代码中的注释,那么一切都很清楚,但这不是问题所在 :)
...
我想说的是,每次移动鼠标都要执行 ChartXYToTimePrice 操作,成本很高...
如果图形用户界面不在主窗口中,要获得相对坐标。
在图形用户界面不在主窗口中时获取相对坐标。
我更感兴趣的是为什么要附加?据我所知,它重复了 CreateBitmapLabel 的操作
所以,也许只有当图形用户界面不在主窗口中时才能计算?:)
当图形用户界面主窗口位于图表的子窗口中,而对话框位于主窗口中时,也会出现不同的情况。
我更感兴趣的是为什么要 "附加"?据我所知,它重复了 CreateBitmapLabel 的操作。
有一个CCanvas::Attach() 方法的代码:
这里有CCanvas::Attach() 方法的代码:
是的,还有 CreateBitmapLabel 上面的代码。我一直在研究它们。据我所知,CreateBitmapLabel 会创建一个空资源,而 Attach 会读取资源(任意)并将其写入 m_pixels。就像我上面写的,我们创建一个 名称为 name 的资源(CreateBitmapLabel),然后读取相同的资源(Attach),并再次将读取的内容写入相同的 m_pixels。
还是我理解错了?
PS 在没有 Attach 的情况下,实验结果一切正常:)
...
PS 在没有 Attach 的情况下,一切正常:)
真的吗?那么又有一些变化了。以前肯定有什么地方不正常。
从图表中删除图形用户界面后,对象会被删除吗?
真的吗?又有变化了之前肯定是有什么地方出了问题。
从图形中删除图形用户界面后,对象会被删除吗?
一切看起来都很干净)