文章 "如何创建任意复杂度的图形面板" - 页 15

 
Stanislav Korotky #:
请参见/MQL5/Include/Controls/Defines.mqh 文件 - 文件中的所有常量都定义为像素(!),因此在更改 DPI 时一切都 "浮动"。如果您想快速解决这个问题,您需要在代码中重新定义所有这些常量。

谢谢。我在代码中做了这样的处理,拖动窗口并点击十字键关闭窗口变得很方便。

但要缩放按钮图标(最小化/关闭),显然需要从其他地方入手:BmpButton.mqh、ChartObjectsBmpControls.mqh 等。

#include <Controls\Defines.mqh>
// 删除旧值
#undef   CONTROLS_DIALOG_CAPTION_HEIGHT
#undef   CONTROLS_DIALOG_BUTTON_OFF
#undef   CONTROLS_BUTTON_SIZE                

// 重新定义新值
#define  CONTROLS_DIALOG_CAPTION_HEIGHT   60   // 窗口标题高度
#define  CONTROLS_DIALOG_BUTTON_OFF       20   // 按钮缩进/位置(交叉、折叠)
//--- BmpButton
#define  CONTROLS_BUTTON_SIZE             40   // 按钮的默认大小(16 x 16)


 
Sunriser #:

谢谢。我在代码中这样做了,拖动窗口并点击十字键关闭窗口变得很方便。

但要缩放按钮图标(最小化/关闭),您显然需要到其他地方查找:BmpButton.mqh、ChartObjectsBmpControls.mqh 等。

图标是位图 - 它们以 bmp 文件格式存储在MQL5/Include/Controls/res/ 目录中 - 如果放大它们,它们看起来会很糟糕。理想情况下,您需要一个单独的子目录(如 /hires/),并为其生成质量上乘的图像,并直接从资源链接到该子目录。

只有像宏那样严格重新定义,才能在普通显示器上显示出巨大的尺寸。也就是说,解决办法只是 "为自己"。好的办法是动态定义尺寸和图像,即编写一个分析当前 DPI 的 MQL5 封装程序。