量化教育軟件:使用 CCanvas 類繪制刻度表盤
介紹
這一切的開始, 是當赫茲量化通過 CCanvas 類首次認清自我。當使用它進行實踐時, 我偶然間想到利用它繪制一個指示器表盤。我的第一個表盤計相當粗糙, 但最終它們都補充了新的元素, 變得賞心悅目。結果就是, 我現在擁有了一個小型程序庫, 可用一種簡單易行的方式為一款指標或 EA 加入刻度表盤。在此文中, 赫茲量化將兼顧表盤的結構, 熟悉繪制和設置視覺外觀的必要函數, 并評估資源強度。

編輯切換為居中
圖例.1. 刻度表盤

編輯切換為居中
1. 坐標和錨點
表盤在圖表上的定位有兩種類型: 絕對和相對。
在 絕對 定位情況下, 坐標代表自錨點邊角沿 X 和 Y 數軸的像素距離。
在 相對 定位情況下, 坐標原點根據指定相對定位類型創(chuàng)建。當選擇了垂直類型, 原點位于參考對象之下或之上 (如果分別選擇了錨點上邊角或下邊角)。當選擇了垂直類型, 它位于錨點邊角方向的左側或右側。在此種情況下, 指定的坐標表示距其原點的偏移。正偏移量導致物體遠離參考對象。當負偏移量的情況, 則物體侵占參照對象。
參照對象可以表示為另一個表盤對象。至關重要的是, 這兩個對象將具有相同的錨點邊角。
圖例. 2 描繪相對定位的一個示例。

編輯
圖例.2. 表盤的相對定位
讓我們回顧一下每一個表盤的設置:
表盤 "gg01": 相對定位被禁止。水平偏移 — 40, 垂直偏移 — 40。
表盤 "gg02": 相對定位 — 水平, 參考對象 — "gg01"。自坐標原點 (點 A) 的水平偏移— 15, 垂直偏移 — 0。
表盤 "gg03": 相對定位 — 垂直, 參照對象 — "gg01"。自坐標原點 (點 B) 的水平偏移— 0, 垂直偏移 — 15。
表盤 "gg04": 相對定位 — 垂直, 參照對象 — "gg02"。自坐標原點 (點 C) 的水平偏移— 50, 垂直偏移 — 15。
如果圖表上有若干指標含有表盤, 則相對定位有利于輸入設置。如果您決定改變某一個表盤的大小, 其它表盤的坐標將會自動重新計算。
函數 GaugeCreate() 設置定位類型和坐標。
2. 表盤元素
刻度表盤由兩類圖形對象組成。其一稱為 刻度層, 另一個稱為 表針層。兩類圖形對象都有相同的坐標。表針層位于刻度層之上。再輸入參數里設置的表盤名作為這兩類對象的前綴。例如, 如果表盤名是 "Gauge01", 則刻度層將被稱為 "Gauge01_s", 而表針層將名為 "Gauge01_n"。
圖例.3 描繪表盤結構。

編輯切換為居中
圖例.3. 表盤結構
刻度層 包括:
邊框 (1)
刻度標記 (5, 6, 7)
刻度標簽 (4)
高亮范圍 (2, 12)
圖解 (3, 10, 11)
圖解是以用途區(qū)分:
表盤描述 (3)
測量單位 (11)
當前數值 (10)
刻度標簽倍數 (省略)
刻度劃分為:
主要 (7)
中等 (5)
次要 (6)
只有主要刻度點有標簽。刻度步長設定為一個數字值。中等刻度步長依據指定的主要刻度之間的中等標記數量計算。次要刻度步長依據指定的中等刻度之間的次要標記數量計算。次要和中等刻度可以省略。
表針層 包括:
表針 (8)
表針中心 (9)
2.1. 大小
圖例.3 描繪一些表盤元素的大小:
d — 表盤大小, 其與表盤外輪廓線的直徑相對應
b — 邊框大小
g — 邊框與刻度元素之間的空間大小
c — 表針中心的大小。
注釋。只有表盤直徑以像素為單位設置大小 (圖例.3 中的 "d")。所有其它元素和字體依照條件單位設置, 且它們的大小以直徑的百分比計算。這樣便于縮放。改變直徑, 則所有其它尺寸將被按比例重新計算。計算系數已列于 宏替換 章節(jié), 且可由用戶修改。
2.2. 實體形狀
表盤的形狀有兩種類型: 圓形和扇形。如果 刻度范圍 角度小于 180 度, 扇形更加便利。

編輯切換為居中
圖例.4. 表盤形狀
圖例.4 描繪一個圓形表盤 (a) 和兩個扇形表盤 (b, c)。函數 GaugeSetCaseParameters() 用于設置期望的實體形狀。
2.3. 刻度
這是表盤十分重要的元素。數據可讀性依據其顯示??潭炔粦^于復雜, 但在同一時間, 它必須能足夠體現信息。選擇刻度極值, 以及主要標記的步長, 需要特別注意。函數 GaugeSetScaleParameters() 允許設置刻度范圍, 它的旋轉和極值 (最小值和最大值)。最小值可以在左側 (順時針) 或右側 (逆時針)。
刻度范圍 是兩個刻度極值間由半徑向量構成的扇形所包含的夾角。它的示范在圖例.5.

編輯切換為居中
圖例.5. 刻度范圍
刻度旋轉 是自表盤中心的向上垂直線, 與刻度范圍的平分點的偏離角度。它的示范在圖例.6.

編輯切換為居中
圖利.6. 刻度旋轉角度
結合刻度范圍角度和旋轉角度可以幫助您以十分靈活方式的設置表盤的外觀。圖例.4(c) 示范一個 90 度范圍和 45 度旋轉的表盤。
最大和最小刻度值 是重要參數, 它們應依據顯示變化的允許數值范圍進行選擇。零標記為方便起見可以省略。如果您的變化范圍從 400 到 600, 那么刻度零不會繪制任何點。圖例.7 描繪最大和最小刻度值的例子。

編輯切換為居中
圖例.7. 最大和最小刻度值
a) 數值從 0 到 500, 順時針
b) 數值從 -200 到 400, 順時針
c) 數值從 -400 到 0, 順時針
d) 數值從 500 到 0, 逆時針
e) 數值從 200 到 800, 順時針
f) 數值從 0 到 -800, 逆時針