文章 "图形界面 XI: 渲染控件 (统合构建14.2)" - 页 2 12345 新评论 Oleksii Chepurnyi 2017.07.17 03:06 #11 Artyom Trishkin:同时还有一个问题:在具有一定透明度的窗口背景上绘制文本标签(CTextLabel)时,标签是在不透明的背景上绘制的,这对 Alpha() 方法没有影响,而且看起来不太好......是否有可能使标签的背景也具有透明度?文章中说"该版本中的透明度仅适用于背景填充和框架。文本和图像在任何设定的 alpha 通道值下都将保持完全不透明和清晰"。 Anatoli Kazharski 2017.07.17 11:46 #12 Artyom Trishkin:你好。Tol,我在示例中没有找到如何在窗口中绘制分界线。索引 是什么意思?应该传递什么索引参数?同时还有一个问题:在具有一定透明度的窗口背景上绘制文本标签(CTextLabel)时,标签是在不透明的背景上绘制的,而不透明的背景对 Alpha() 方法没有反应,这看起来不太好 ....。是否有可能使标签的背景也具有透明度?带有索引的参数不应该存在。我忘了删除它。现在您可以在这里传递任何值。我将在下次更新时删除该参数。例如//+------------------------------------------------------------------+ //| 创建分界线| //+------------------------------------------------------------------+ bool CProgram::CreateSepLine1(const int x_gap,const int y_gap) { //--- 保存窗口指针 m_sep_line1.MainPointer(m_window); //--- 尺寸 int x_size=2; int y_size=72; //--- 属性 m_sep_line1.DarkColor(C'150,150,150'); m_sep_line1.LightColor(clrWhite); m_sep_line1.TypeSepLine(V_SEP_LINE); //--- 创建一个元素 if(!m_sep_line1.CreateSeparateLine(0,x_gap,y_gap,x_size,y_size)) return(false); //--- 添加指向基本元素的指针 CWndContainer::AddToElementsArray(0,m_sep_line1); return(true); }//---Artyom Trishkin: ...同时还有一个问题:在具有一定透明度的窗口背景上绘制文本标签(CTextLabel)时,标签是绘制在自己不透明的背景上的,这对 Alpha() 方法没有任何反应,而且看起来不太好 ....。有没有可能让标签的背景也具有透明度?现在可以手动设置每个元素的透明度。在下面的示例中,窗口背景设置为 alpha 通道200。文本标签的背景设置为0。//---示例//+------------------------------------------------------------------+ //|| 创建文本标签 1| //+------------------------------------------------------------------+ #resource "\\Images\\EasyAndFastGUI\\Icons\\bmp16\\line_chart.bmp" //--- bool CProgram::CreateTextLabel(const int x_gap,const int y_gap,string text) { //--- 保存指向主元素的指针 m_text_label.MainPointer(m_window); //--- 属性 m_text_label.Alpha(0); m_text_label.XSize(190); m_text_label.YSize(20); m_text_label.LabelXGap(21); m_text_label.LabelYGap(3); m_text_label.IconFile("Images\\EasyAndFastGUI\\Icons\\bmp16\\line_chart.bmp"); //--- 创建一个元素 if(!m_text_label.CreateTextLabel(text,x_gap,y_gap)) return(false); //--- 添加指向基本元素的指针 CWndContainer::AddToElementsArray(0,m_text_label); return(true); } Anatoli Kazharski 2017.07.17 11:48 #13 Oleksii Chepurnyi:摘自文章:"该版本中的透明度仅适用于背景填充和边框。文本和图像在任何 alpha 通道设置下都将保持完全不透明和清晰"。 这是针对库中所有项目的规则。也就是说,每个项目都可以单独设置 alpha 通道。 Artyom Trishkin 2017.07.17 13:00 #14 Anatoli Kazharski: 这是针对库中所有项目的规则。也就是说,每个项目的 alpha 通道都可以单独设置。感谢您的解释。还有一个问题:返回对象的坐标是在什么坐标系下?例如,如果我取按钮 m_button_text.X2() 右边缘的坐标,那么按钮的坐标是以什么坐标系返回的?窗体窗口还是图表窗口?我的问题是:我正在窗体窗口中创建对象。如果按钮一个接一个连续出现,我会将第二个按钮的 X() 坐标当作第一个按钮的 X2()+2 坐标。第三个按钮的 X() 坐标是第二个按钮的 X2()+2 坐标,以此类推......。只要面板位于符号图表的 0 坐标处,一切都没问题。如果向右移动并切换 TF,按钮就会向右移动。窗口窗体离图表左边缘越远,按钮之间的距离就越大。如何设置每个按钮的坐标,使其在将窗体窗口移动到新位置并切换 TF 时不会在屏幕上移动? Anatoli Kazharski 2017.07.17 13:26 #15 Artyom Trishkin:谢谢您的解释。还有一个问题:...返回的是绝对坐标。我需要将它们转换为相对坐标。相对于要创建的元素所连接的元素。如果主元素是一个表单,那么... int x=(m_button1.X2()+5)-m_window.X(); if(!CreateButton2(x,50,"Button 2")) return(false); ...//--- Artyom Trishkin 2017.07.17 17:18 #16 Anatoli Kazharski:返回的是绝对坐标。必须将它们转换为相对坐标。相对于要创建的元素所连接的元素。如果主元素是一个表单,那么//--- 谢谢。奇怪,我也试过这样做--在更改 tf 时,按钮会移动到图表窗口的左边缘。我再仔细试试。 Artyom Trishkin 2017.07.17 22:26 #17 Anatoli Kazharski:返回的是绝对坐标。必须将它们转换为相对坐标。相对于要创建的元素所连接的元素。如果主元素是一个表单,那么//---奇怪的是当我将该方法计算出的坐标传入对象构建 方法时,一切正常....。int x=(m_button1.X2()+5)-m_window.X();但如果我只将计算出的坐标传递给该方法,那么.....:int x=m_button1.X2()+5;...然后在该方法中立即从传递的坐标中减去m_window.X() 的值,一切都会浮动....但是在哪里减去有什么区别吗?是立即减,还是已经在构建方法中减....。也许我吃错了东西,但我不明白为什么会这样? Artyom Trishkin 2017.07.17 22:58 #18 如果在 TestLibrary14 的 Program.mqh 中写入一行内容--更改窗口标题颜色://+------------------------------------------------------------------+ //|| 创建程序的图形用户界面 //+------------------------------------------------------------------+ bool CProgram::CreateGUI(void) { //--- 创建面板 if(!CreateWindow("EXPERT PANEL")) return(false); m_window.CaptionColor(clrDimGray); 那么最小化窗口后,颜色将返回默认值。而工具提示、最小化/取消修改和关闭按钮则会以程序设置的窗口标题颜色重新绘制。只有当光标悬停在上面时,这些按钮的颜色才会变为默认颜色。顺便问一下,这些按钮的背景是否可以是透明的?例如,窗口标题是灰色的,但按钮是蓝色的.... Artyom Trishkin 2017.07.18 11:13 #19 Tol,你可以在本系列的哪篇文章中读到有关 CKeys 的信息?有时在输入框中输入数字时,会输入数字键+Shift 键上的字符。例如,我输入 2,但 @ 会被输入 ....。在某些情况下--我不知道是哪种情况(可能取决于窗体窗口中控件的数量和类型),按下 Backspace 键会导致控件从窗体窗口中删除,删除顺序与添加顺序相反。我不明白为什么光标在输入栏时,按 Backspace 键不是作为输入栏的控制字符,而是作为删除窗体窗口上控件的命令。例如:我启动程序并开始按 Backspace 键,每次按 Backspace 键都会删除所有控件,从最后添加的控件开始。最后,已经清空的窗口窗体也会被删除。是否有可能在光标不在输入框时禁用对 Backspace 的反应? Anatoli Kazharski 2017.07.18 12:10 #20 Artyom Trishkin:...顺便问一下,有没有可能让这些按钮的背景变成透明的?例如,窗口标题是灰色的,但按钮是蓝色的....。使用方法获取 复合元素的指针。同样的规则适用于所有元素。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
同时还有一个问题:在具有一定透明度的窗口背景上绘制文本标签(CTextLabel)时,标签是在不透明的背景上绘制的,这对 Alpha() 方法没有影响,而且看起来不太好......是否有可能使标签的背景也具有透明度?
文章中说
"该版本中的透明度仅适用于背景填充和框架。文本和图像在任何设定的 alpha 通道值下都将保持完全不透明和清晰"。
你好。Tol,我在示例中没有找到如何在窗口中绘制分界线。
索引 是什么意思?
应该传递什么索引参数?
同时还有一个问题:在具有一定透明度的窗口背景上绘制文本标签(CTextLabel)时,标签是在不透明的背景上绘制的,而不透明的背景对 Alpha() 方法没有反应,这看起来不太好 ....。是否有可能使标签的背景也具有透明度?
带有索引的参数不应该存在。我忘了删除它。现在您可以在这里传递任何值。我将在下次更新时删除该参数。
例如
//---
...
同时还有一个问题:在具有一定透明度的窗口背景上绘制文本标签(CTextLabel)时,标签是绘制在自己不透明的背景上的,这对 Alpha() 方法没有任何反应,而且看起来不太好 ....。有没有可能让标签的背景也具有透明度?
现在可以手动设置每个元素的透明度。在下面的示例中,窗口背景设置为 alpha 通道200。文本标签的背景设置为0。
//---
示例
摘自文章:
"该版本中的透明度仅适用于背景填充和边框。文本和图像在任何 alpha 通道设置下都将保持完全不透明和清晰"。
这是针对库中所有项目的规则。也就是说,每个项目的 alpha 通道都可以单独设置。
感谢您的解释。还有一个问题:
返回对象的坐标是在什么坐标系下?
例如,如果我取按钮 m_button_text.X2() 右边缘的坐标,那么按钮的坐标是以什么坐标系返回的?窗体窗口还是图表窗口?
我的问题是:我正在窗体窗口中创建对象。如果按钮一个接一个连续出现,我会将第二个按钮的 X() 坐标当作第一个按钮的 X2()+2 坐标。第三个按钮的 X() 坐标是第二个按钮的 X2()+2 坐标,以此类推......。
只要面板位于符号图表的 0 坐标处,一切都没问题。如果向右移动并切换 TF,按钮就会向右移动。窗口窗体离图表左边缘越远,按钮之间的距离就越大。
如何设置每个按钮的坐标,使其在将窗体窗口移动到新位置并切换 TF 时不会在屏幕上移动?
谢谢您的解释。还有一个问题:
...
返回的是绝对坐标。我需要将它们转换为相对坐标。相对于要创建的元素所连接的元素。
如果主元素是一个表单,那么
//---
返回的是绝对坐标。必须将它们转换为相对坐标。相对于要创建的元素所连接的元素。
如果主元素是一个表单,那么
//---
返回的是绝对坐标。必须将它们转换为相对坐标。相对于要创建的元素所连接的元素。
如果主元素是一个表单,那么
//---
奇怪的是当我将该方法计算出的坐标传入对象构建 方法时,一切正常....。
但如果我只将计算出的坐标传递给该方法,那么.....:
...然后在该方法中立即从传递的坐标中减去m_window.X() 的值,一切都会浮动....但是在哪里减去有什么区别吗?是立即减,还是已经在构建方法中减....。
也许我吃错了东西,但我不明白为什么会这样?
如果在 TestLibrary14 的 Program.mqh 中写入一行内容--更改窗口标题颜色:
那么最小化窗口后,颜色将返回默认值。而工具提示、最小化/取消修改和关闭按钮则会以程序设置的窗口标题颜色重新绘制。只有当光标悬停在上面时,这些按钮的颜色才会变为默认颜色。
顺便问一下,这些按钮的背景是否可以是透明的?例如,窗口标题是灰色的,但按钮是蓝色的....
Tol,你可以在本系列的哪篇文章中读到有关 CKeys 的信息?
有时在输入框中输入数字时,会输入数字键+Shift 键上的字符。例如,我输入 2,但 @ 会被输入 ....。
在某些情况下--我不知道是哪种情况(可能取决于窗体窗口中控件的数量和类型),按下 Backspace 键会导致控件从窗体窗口中删除,删除顺序与添加顺序相反。我不明白为什么光标在输入栏时,按 Backspace 键不是作为输入栏的控制字符,而是作为删除窗体窗口上控件的命令。例如:我启动程序并开始按 Backspace 键,每次按 Backspace 键都会删除所有控件,从最后添加的控件开始。最后,已经清空的窗口窗体也会被删除。
是否有可能在光标不在输入框时禁用对 Backspace 的反应?
...
顺便问一下,有没有可能让这些按钮的背景变成透明的?例如,窗口标题是灰色的,但按钮是蓝色的....。
使用方法获取 复合元素的指针。同样的规则适用于所有元素。