Màu sắc
MQL5 có một loại đặc biệt để làm việc với màu sắc. Điều này cho phép tô màu các đối tượng đồ họa.
Để biểu thị loại, từ khóa color được sử dụng. Đối với giá trị loại màu, 4 byte bộ nhớ được phân bổ. Biểu diễn bên trong của nó là một số nguyên không dấu chứa một màu ở định dạng RGB (Đỏ, Xanh lục, Xanh lam), tức là có các mức cường độ riêng biệt cho màu đỏ, xanh lục và xanh lam. Trộn ba thành phần này cho phép có được bất kỳ sắc thái màu nào có thể nhìn thấy được. Xanh lục và đỏ sẽ tạo ra màu vàng, đỏ và xanh lam sẽ tạo ra màu tím, v.v.
1 byte được phân bổ cho mỗi thành phần, nghĩa là nó có thể nhận các giá trị từ 0 đến 255. Ví dụ, ba số 0 trong tất cả các thành phần sẽ tạo ra màu đen, trong khi ba giá trị tối đa là 255 sẽ được pha trộn thành màu trắng.
Nếu chúng ta biểu diễn màu dưới dạng uint theo ký hiệu thập lục phân, thì các màu được phân bổ như sau: 0x00BBGGRR, trong đó RR, GG và BB là các số nguyên không dấu một byte.
Để thuận tiện cho người dùng, MQL5 hỗ trợ một dạng đặc biệt của literal để ghi lại hằng số màu. Literal biểu diễn một bộ ba số được phân cách bằng dấu phẩy và được đặt trong dấu ngoặc đơn. Ký tự 'C' được đặt trước literal. Ví dụ, C'0,128,255' nghĩa là một màu với 0 cho thành phần màu đỏ, 128 cho màu xanh lá cây và 255 cho màu xanh lam. Ký hiệu thập lục phân của các số cũng có thể được sử dụng: C'0x00,0x80,0xFF'.
Ngoài ra, một danh sách dài các sắc thái màu được xác định trước được nhúng trong MQL5, tất cả đều bắt đầu bằng clr. Ví dụ, clrMagenta, clrLightCyan và clrYellow. Tất nhiên, chúng cũng bao gồm các màu chính: clrRed, clrGreen và clrBlue. Danh sách đầy đủ có thể được tìm thấy trong MetaEditor Help.
Dưới đây là một số ví dụ về cài đặt màu (cũng có trong tệp MQL5/Scripts/MQL5Book/p2/TypeColor.mq5):
void OnStart()
{
color y = clrYellow; // clrYellow
color m = C'255,0,255'; // clrFuchsia
color x = C'0x88,0x55,0x01'; // x = 136,85,1 (no such predefined color)
color n = 0x808080; // clrGray
}2
3
4
5
6
7
