Thông số màn hình
Một số thuộc tính được cung cấp bởi hàm TerminalInfoInteger
liên quan đến hệ thống video của máy tính.
Bảng mô tả các thuộc tính
Định danh | Mô tả |
---|---|
TERMINAL_SCREEN_DPI | Độ phân giải thông tin hiển thị trên màn hình, được đo bằng số chấm trên mỗi inch tuyến tính (DPI, Dots Per Inch) |
TERMINAL_SCREEN_LEFT | Tọa độ bên trái của màn hình ảo |
TERMINAL_SCREEN_TOP | Tọa độ phía trên của màn hình ảo |
TERMINAL_SCREEN_WIDTH | Chiều rộng màn hình ảo |
TERMINAL_SCREEN_HEIGHT | Chiều cao màn hình ảo |
TERMINAL_LEFT | Tọa độ bên trái của terminal so với màn hình ảo |
TERMINAL_TOP | Tọa độ phía trên của terminal so với màn hình ảo |
TERMINAL_RIGHT | Tọa độ bên phải của terminal so với màn hình ảo |
TERMINAL_BOTTOM | Tọa độ phía dưới của terminal so với màn hình ảo |
Biết tham số TERMINAL_SCREEN_DPI
, bạn có thể thiết lập kích thước của đối tượng đồ họa sao cho chúng trông giống nhau trên các màn hình có độ phân giải khác nhau. Ví dụ, nếu bạn muốn tạo một nút với kích thước hiển thị là X centimet, thì bạn có thể chỉ định nó dưới dạng số chấm màn hình (pixel) bằng hàm sau:
int cm2pixels(const double x)
{
static const double inch2cm = 2.54; // 1 inch bằng 2.54 cm
return (int)(x / inch2cm * TerminalInfoInteger(TERMINAL_SCREEN_DPI));
}
2
3
4
5
Màn hình ảo là một hộp bao quanh tất cả các màn hình. Nếu hệ thống có nhiều hơn một màn hình và thứ tự sắp xếp của chúng không hoàn toàn từ trái sang phải, thì tọa độ bên trái của màn hình ảo có thể âm, và trung tâm (điểm tham chiếu) sẽ nằm ở ranh giới của hai màn hình (ở góc trên bên trái của màn hình chính).
Chú thích hình ảnh: Màn hình ảo từ nhiều màn hình
Nếu hệ thống chỉ có một màn hình, thì kích thước của màn hình ảo hoàn toàn tương ứng với nó.
Tọa độ của terminal không tính đến trạng thái phóng to hiện tại của nó (tức là, nếu cửa sổ chính được phóng to, các thuộc tính trả về kích thước chưa phóng to, mặc dù terminal đã mở rộng ra toàn bộ màn hình).
Trong script EnvScreen.mq5
, hãy kiểm tra việc đọc các thuộc tính màn hình.
void OnStart()
{
PRTF(TerminalInfoInteger(TERMINAL_SCREEN_DPI));
PRTF(TerminalInfoInteger(TERMINAL_SCREEN_LEFT));
PRTF(TerminalInfoInteger(TERMINAL_SCREEN_TOP));
PRTF(TerminalInfoInteger(TERMINAL_SCREEN_WIDTH));
PRTF(TerminalInfoInteger(TERMINAL_SCREEN_HEIGHT));
PRTF(TerminalInfoInteger(TERMINAL_LEFT));
PRTF(TerminalInfoInteger(TERMINAL_TOP));
PRTF(TerminalInfoInteger(TERMINAL_RIGHT));
PRTF(TerminalInfoInteger(TERMINAL_BOTTOM));
}
2
3
4
5
6
7
8
9
10
11
12
Dưới đây là ví dụ về các mục nhật ký kết quả.
TerminalInfoInteger(TERMINAL_SCREEN_DPI)=96 / ok
TerminalInfoInteger(TERMINAL_SCREEN_LEFT)=0 / ok
TerminalInfoInteger(TERMINAL_SCREEN_TOP)=0 / ok
TerminalInfoInteger(TERMINAL_SCREEN_WIDTH)=1440 / ok
TerminalInfoInteger(TERMINAL_SCREEN_HEIGHT)=900 / ok
TerminalInfoInteger(TERMINAL_LEFT)=126 / ok
TerminalInfoInteger(TERMINAL_TOP)=41 / ok
TerminalInfoInteger(TERMINAL_RIGHT)=1334 / ok
TerminalInfoInteger(TERMINAL_BOTTOM)=836 / ok
2
3
4
5
6
7
8
9
Ngoài kích thước tổng quát của màn hình và cửa sổ terminal, các chương trình MQL thường cần phân tích kích thước hiện tại của biểu đồ (cửa sổ con bên trong terminal). Để phục vụ mục đích này, có một tập hợp các hàm đặc biệt (đặc biệt là ChartGetInteger
), mà chúng ta sẽ thảo luận trong phần Biểu đồ.