首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> C# 入門

C# 使用 ChartDirector 繪製證券走勢圖:實戰經驗與核心代碼解析

     編輯:C# 入門

專案背景

開發 B/S 架構證券交易大屏幕系統,需繪製指數走勢與成交量圖表,客戶要求畫面清晰且與舊系統風格一致。初次接觸 ChartDirector,文件範例上手快,但細節調整(如 Y 軸縮放、網格線、標籤格式)卻鮮有中文 C# 實戰資料,最終靠 VS IntelliSense 試參數、查字典摸索出完整方案。

核心繪圖邏輯:GetTrendChart 方法

輸入:畫布寬高、Y 軸資料陣列 double[] dlChartData。輸出:XYChart 物件。

1. 資料前處理:計算極值與 X 軸標籤

double dlLin = dlChartData[0], dlMax = dlChartData[0];
string[] XData = new string[2880]; // 固定 2880 個時間點(如 1 分鐘一筆,4.8 小時)

for (int i = 0; i < dlChartData.Length; i++) {
    XData[i] = " "; // 實際專案可填入時間字串
    if (dlChartData[i] < dlLin) dlLin = dlChartData[i];
    if (dlChartData[i] > dlMax) dlMax = dlChartData[i];
}
// 補齊剩餘點位
for (int i = dlChartData.Length; i < 2880; i++) XData[i] = " ";

// 計算相對首點的最大浮動幅度,決定 Y 軸對稱範圍
double dlFir = Math.Abs(m_KPNum - dlLin); // m_KPNum 為昨日收盤價/基準價
double dlSec = Math.Abs(m_KPNum - dlMax);
double dlFloat = Math.Max(dlFir, dlSec);

2. 建立圖表與 Y 軸設定

XYChart c = new XYChart(iWidth, iHeight);

// Y 軸範圍:以基準價為中心,對稱擴展 dlFloat
double dMin = Math.Round(m_KPNum - dlFloat, 2);
double dMax = Math.Round(m_KPNum + dlFloat, 2);

// 保護機制:若範圍過小(波動極小),強制設為基準價 ±0.5%
if ((dMax - dMin) < dlChartData[0] * 0.5) {
    dMax = Math.Round(dlChartData[0] + dlChartData[0] * 0.5, 2);
    dMin = Math.Round(dlChartData[0] - dlChartData[0] * 0.5, 2);
}

// 關鍵:先設定線性刻度,再設定標籤步進/格式
c.yAxis().setLinearScale(dMin, dMax, (dMax - dMin) / 4); // 固定 4 條網格線
// c.yAxis().setLabelFormat("{value}%"); // 依需求啟用
// c.yAxis().setLabelGap(10); c.yAxis().setLabelStep(...); // 微調標籤顯示
關鍵心得:setLinearScale(min, max, step) 必須在 setLabelFormat 之前呼叫;若先設 Label 會導致曲線圖層無法自動生成,需手動添加線圖層。

3. 後續:添加線圖層、成交量柱狀圖、十字光標等

(原文代碼截斷,實務中續接 c.addLineLayer()、c.addBarLayer()、c.addCrossHair() 等。)

避坑指南與最佳實踐

  • 參數探索:官方文件多為 VB/ASP/C++ 範例,C# 開發者請善用 c.yAxis().、c.xAxis(). 的 IntelliSense 列舉所有方法,配合 ChartDirector.chm 逐一驗證。
  • 座標系理解:ChartDirector 以像素為單位,Y 軸 0 點在頂部,資料映射需注意正負號。
  • 效能優化:大量資料點(>5000)建議啟用 c.setAntiAlias(false) 或降低繪圖頻率。
  • 授權部署:生產環境需授權 ChartDirector.dll,開發機免授權但會有水印。

結語

ChartDirector 功能強大、API 細緻,適合金融級圖表呈現。掌握「先設 Scale、後設 Label」、「善用對稱縮放處理微小波動」等核心模式,即能高效產出專業走勢圖。完整專案代碼已應用於生產環境穩定運行兩年餘。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved