基於 `Graphics` 繪製雙數據序列折線圖,含標題、圖例、座標軸、數值標籤、自適應縮放。

public Image Render(string title, int width, int height, DataTable chartTable) {
var bmp = new Bitmap(width, height);
using (var g = Graphics.FromImage(bmp)) {
g.Clear(Color.White);
// 邊界檢查、空數據處理...
// 計算最大值用於縮放
float maxVal = 1;
foreach (DataRow dr in chartTable.Rows) {
maxVal = Math.Max(maxVal, Convert.ToSingle(dr[0]));
maxVal = Math.Max(maxVal, Convert.ToSingle(dr[1]));
}
// 繪製標題、圖例(垂直文字)
// 繪製數據點、連線、座標軸、刻度標籤...
// 關鍵:兩序列點陣列
PointF[] pts1 = new PointF[chartTable.Rows.Count];
PointF[] pts2 = new PointF[chartTable.Rows.Count];
// 循環計算每個點座標並填充陣列
// g.DrawLines(new Pen(Color.Red), pts1);
// g.DrawLines(new Pen(Color.Blue), pts2);
}
return bmp;
}
代碼可直接用於 WebForm `Image` 控件輸出或 WinForm `PictureBox` 顯示。轉載請註明出處:半支煙阿傑。